C#简化示例。
具有类层次结构:Animal -> Pet -> Dog
每个类都有一个Eat()
方法,该方法执行特定于该层次结构级别的操作。
当我致电Dog.Eat()
时,我需要先依次依次Pet.Eat()
和Animal.Eat()
我尝试添加到所有子类中
public override void Eat() {
base.Eat();
}
并在基础Animal
上:
public virtual void Eat(){
}
这似乎不正确,因为我得到警告,我应该在Dog.Eat()
上使用'new'关键字,因为它隐藏了基础Eat()
答案 0 :(得分:1)
您可以尝试在override
和Pet
类上使用Dog
。
然后在子类方法上使用base.Eat();
。
public class Animal
{
public virtual void Eat()
{
Console.WriteLine( "A" );
}
}
public class Pet : Animal
{
public override void Eat()
{
base.Eat();
Console.WriteLine( "B" );
}
}
public class Dog : Pet
{
public override void Eat()
{
base.Eat();
Console.WriteLine( "C" );
}
}