2016-10-15 3 views
0

私はおそらくほとんどの人には自明であるかなり基本的な質問があります。C#オーバライド変数

が、これはクラスが継承されたときに上書きする変数を強制するための最良の方法ですが?

class foo 
{ 
public abstract int nameOfInt{get; set; } 
} 

class bar:foo; 
{ 

public bar() 
{ 

override nameOfInt = 0x00; 

} 
} 
+0

あなたの要件によって異なります。 –

+0

この時点で私の唯一の要件は、クラス 'foo'が継承されるときにその変数をオーバーライドする必要があるということです。 申し訳ありませんが、私は何かが不足しています。私はこれにかなり新しいです... –

+0

あなたのコードは構文的に間違っています –

答えて

1

我々はforce実装したい場合は、interfaceが進むべき道です。それは継承されたオブジェクトにrules (methods, properties...) must be implementedがあることを伝えます。

abstractクラスの場合、動作の基本的な定義はできますが、abstractからインスタンス化することはできません。

あなたのコードに来る:

property

- nameOfIntabstractという名前で、それは abstractクラスに含まれていない - 仕様ごととして間違っています。

これは、あなたがこれに取り掛かるべきかです:私たちは相続でpropretyをオーバーライドについて話すことはできません

abstract class foo 
{ 
    public abstract int nameOfInt { get; set; } 
} 

class bar : foo 
{ 
    public override int nameOfInt 
    { 
     get 
     { 
      throw new NotImplementedException(); 
     } 

     set 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 
+0

これは、インターフェイスまたは抽象クラスを使用するかどうかを判断するのに役立ちます。http://stackoverflow.com/questions/1474249/abstract -classes-vs-interfaces – YuvShap

-1

、私はあなたがすることによってそれを強制することができますが、その場合には上書き方法について話しているとし親クラス抽象化、またはオーバーライドされるメソッドを含むインタフェースからクラスを継承させる。

+0

これは実際にプロパティを上書きすることができます。http://stackoverflow.com/questions/8447832/can-i-override-a-property-in-c-how – YuvShap