私はおそらくほとんどの人には自明であるかなり基本的な質問があります。C#オーバライド変数
が、これはクラスが継承されたときに上書きする変数を強制するための最良の方法ですが?
class foo
{
public abstract int nameOfInt{get; set; }
}
class bar:foo;
{
public bar()
{
override nameOfInt = 0x00;
}
}
私はおそらくほとんどの人には自明であるかなり基本的な質問があります。C#オーバライド変数
が、これはクラスが継承されたときに上書きする変数を強制するための最良の方法ですが?
class foo
{
public abstract int nameOfInt{get; set; }
}
class bar:foo;
{
public bar()
{
override nameOfInt = 0x00;
}
}
我々はforce
実装したい場合は、interface
が進むべき道です。それは継承されたオブジェクトにrules (methods, properties...) must be implemented
があることを伝えます。
abstract
クラスの場合、動作の基本的な定義はできますが、abstract
からインスタンス化することはできません。
あなたのコードに来る:
property
nameOfInt
は
abstract
という名前で、それは
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();
}
}
}
これは、インターフェイスまたは抽象クラスを使用するかどうかを判断するのに役立ちます。http://stackoverflow.com/questions/1474249/abstract -classes-vs-interfaces – YuvShap
、私はあなたがすることによってそれを強制することができますが、その場合には上書き方法について話しているとし親クラス抽象化、またはオーバーライドされるメソッドを含むインタフェースからクラスを継承させる。
これは実際にプロパティを上書きすることができます。http://stackoverflow.com/questions/8447832/can-i-override-a-property-in-c-how – YuvShap
あなたの要件によって異なります。 –
この時点で私の唯一の要件は、クラス 'foo'が継承されるときにその変数をオーバーライドする必要があるということです。 申し訳ありませんが、私は何かが不足しています。私はこれにかなり新しいです... –
あなたのコードは構文的に間違っています –