私はカップルのクラスがあります。派生クラスのフィールドも派生させることは可能ですか?
public class A {
public int value;
public A(int value) {
this.value = value;
}
}
public class B : A {
public B(int value) : base(value) { }
}
public class Base {
public A someobject;
public Base(A someobject)
{
this.someobject = someobject;
}
}
私はクラスBase
から派生したい場合は、私はこれを書くことができます。
public class Derived : Base {
public Derived(A someobject) : base(someobject) { }
}
しかし、それは、この例のように派生サブクラスであるとsomeobject
フィールドのデータ型を変更することは可能でしょうか?
public class Derived : Base {
public B someobject;
public Derived(B someobject) : base(someobject) { }
}
いいえ、あなたは 'someobject'フィールドのデータ型を変更することはできません。あなたは現在、ベースフィールドを隠していて、 'Derived'で新しいフィールドを宣言しています。あなたのコードはコンパイルされ、フィールド隠蔽によって生成された警告とは別に動作します。 – Blorgbeard