Ich habe gesucht und nicht in der Lage gewesen, eine Lösung für mein Problem zu finden. Mein Szenario ist sehr einfach:base.Method() mit mehreren Vererbungsebenen, die nicht aufgerufen werden?
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");
}
}
Was ich versuche, eine Instanz der Klasse C zu tun ist, haben (wir nennen es ‚instanceC‘) rufen sowohl die überschriebene Methode der Mutter, und seine Großeltern. Also würde ich dies erwarten:
instanceC.MethodOne();
// Output:
// "A"
// "B"
// "C"
Aber anstatt dies bin immer:
instanceC.MethodOne();
// Output
// "A"
// "C"
mit der Methode der Klasse B übersprungen werden. Ist das nicht möglich? Ich dachte, das ist der ganze Punkt der Vererbung/Polymorphie. Danke im Voraus!
Sind Sie sicher, dass C von B abgeleitet ist und A nicht? – jure
Warum würde C ovveride von B? Sie wollen es von A. – Derek
Ihr Beispiel als für mich und Drucke ‚ABC‘ – Lee