C# で、オーバーライドするメソッドのアクセス修飾子を変更しないのに指定する必要があるのはなぜですか? このような状況では、アクセス修飾子をまったく指定しない方が簡単で論理的ではないでしょうか?
(明確にするために、私がこの質問を書いているのは、私が言語設計者よりも頭がいいと思っているからではなく、まだ理解できない正当な理由があると確信しているからです。)
編集: アクセス修飾子を変更できない理由についてではなく、重複して指定する必要がある理由について質問しています。
C# で、オーバーライドするメソッドのアクセス修飾子を変更しないのに指定する必要があるのはなぜですか? このような状況では、アクセス修飾子をまったく指定しない方が簡単で論理的ではないでしょうか?
(明確にするために、私がこの質問を書いているのは、私が言語設計者よりも頭がいいと思っているからではなく、まだ理解できない正当な理由があると確信しているからです。)
編集: アクセス修飾子を変更できない理由についてではなく、重複して指定する必要がある理由について質問しています。
私は言語設計者の 1 人ではありませんが、次のように指定するように強制することは完全に合理的だと思います。
基本的に、冗長性は時々良いことです:)
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 層にいるとします。メソッドのアクセス修飾子を見つけるには、継承階層をたどって元の基本クラスまでさかのぼる必要があります。それは単に迷惑です!
コードを書かない別の開発者がコードを理解しやすくするため。オーバーライドを読むと、ポリモーフィズムを作成していることがわかります