サブクラスのフィールドまたはプロパティをオーバーライドする
抽象基本クラスがあり、この親クラスから継承する各クラスで異なる値を持つフィールドまたはプロパティを宣言したい。 基本クラスのメソッドで参照できるように、それを基本クラスで定義したいと思います。たとえば、ToStringをオーバーライドして、「このオブジェクトはプロパティ/フィールドタイプです」と言っています。これを行う方法は3つありますが、疑問に思っていました。これを行うための最良の方法または受け入れられている方法は何ですか。初心者の質問、申し訳ありません。 オプション1: 抽象プロパティを使用し、継承したクラスでそれをオーバーライドします。これは強制されることでメリットがあり(オーバーライドする必要があります)、クリーンです。しかし、フィールドをカプセル化するのではなく、ハードコード値を返すのは少し間違っているように感じられ、単なるコード行ではなく、数行のコードです。また、「セット」の本体を宣言する必要がありますが、それはそれほど重要ではありません(そして、私が知らないものを回避する方法がおそらくあるでしょう)。 abstract class Father { abstract public int MyInt { get; set;} } class Son : Father { public override int MyInt { get { return 1; } set { } } } オプション2 パブリックフィールド(または保護フィールド)を宣言し、継承したクラスで明示的にオーバーライドできます。以下の例では、「new」を使用するように警告が表示され、おそらくそれを実行できますが、それは間違っていると感じ、多型性を壊します。良い考えではないようです... abstract class Mother { public int MyInt = 0; } class Daughter …