重载方法中访问修饰符的目的是什么?
本文关键字:是什么 方法 访问 重载 | 更新日期: 2023-09-27 18:06:13
为什么在c#中我需要指定访问修饰符的方法,我重写,如果我不改变它?在这种情况下,不指定任何访问修饰符不是更简单、更合乎逻辑吗?
(只是澄清一下:我写这个问题不是因为我认为我比语言设计师更聪明,而是因为我确信他们有一个很好的理由,我还不能理解。)
编辑:我不是在问为什么我们不能改变访问修饰符,而是在问为什么我们必须冗余指定它
虽然我不是语言设计者之一,但我认为强制您指定它是完全合理的:
- 任何阅读代码的人都可以立即知道访问权限,而不必检查原始声明
- 对原始声明的访问方式的更改是一个破坏性的更改,使它对重写代码更明显
- 使碰巧重写了高级声明的方法与非重写方法保持一致。(没有访问修饰符的方法有时是公共的,有时是私有的,这取决于覆盖,这将是奇怪的。)
基本上,冗余有时是件好事:)
要用代码说明Jon的观点,请考虑以下内容:
class LevelOne
{
public virtual void SayHi()
{
Console.WriteLine("Hi!");
}
}
class LevelTwo : LevelOne
{
override void SayHi()
{
Console.WriteLine("Hi!");
}
}
class LevelThree : LevelTwo
{
override void SayHi()
{
Console.WriteLine("Hi!");
}
}
无限。现在想象一下,您有n个派生类,您必须遵循继承层次结构,一直回到原始基类,以找到方法的访问修饰符。这真是太烦人了!
为了便于其他不编写代码的开发人员理解代码。当你读override的时候你就知道你创造了多态性