Причина, по которой ваша программа не делает того, чего вы ожидаете, заключается в ключевом слове new
в вашем методе.
c # метод не связан динамически по умолчанию. Это означает, что вызываемый метод определяется во время компиляции. Вы можете посмотреть, как тип переменной определяет, какой метод вызывается вместо фактического объекта в памяти.
Чтобы достичь желаемого эффекта, вам нужно убедиться, что c3 динамически связывает метод. Вы можете сделать это, объявив метод virtual
и метод переопределения override
.
class Flugzeug : ILuftfahrzeug
{
public virtual void Starten()
{
Console.WriteLine("Das Flugzeug startet, "+Dings());
}
protected virtual string Dings()
{
return "Flugzeug Dings";
}
}
class Motorflugzeug : Flugzeug, ILuftfahrzeug
{
public override void Starten()
{
Console.WriteLine("Das Motorflugzeug startet, "+Dings());
}
protected override string Dings()
{
return "Motorflugzeug Dings";
}
}
Как правило, никогда не используйте new
для метода. Он почти никогда не делает то, что вы хотите.