私は検索しましたが、私の問題の解決策を見つけることができませんでした。私のシナリオは非常に単純です:base.Method()複数の継承レベルが呼び出されていない?
public class A
{
public virtual void MethodOne()
{
Console.log("A");
}
}
public class B : A
{
public override void MethodOne()
{
base.MethodOne();
Console.log("B");
}
}
public class C : B
{
public override void MethodOne()
{
base.MethodOne();
Console.log("C");
}
}
私がやろうとしていますどのようなことは、クラスCのインスタンスを持っている(我々はそれに名前を付けましょう「instanceC」)オーバーライドされた親の方法、及びその祖父母の両方を呼び出します。
instanceC.MethodOne();
// Output:
// "A"
// "B"
// "C"
をしかし、その代わりに、これを取得しています:だから私はこれを期待するクラスBの方法で
instanceC.MethodOne();
// Output
// "A"
// "C"
がスキップされています。これは不可能ですか?私はこれが相続/多型の全体のポイントだと思った。前もって感謝します!
CはAからではなくBから派生したものですか? – jure
CがなぜBから来るのですか?あなたはそれがAから継承したいと思う。 – Derek
あなたの例は私のために期待どおりに動作し、 'ABC'を印刷する – Lee