C#在子类上调用相同的函数

时间:2019-06-15 01:09:47

标签: c# inheritance

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()

1 个答案:

答案 0 :(得分:1)

您可以尝试在overridePet类上使用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" );
    }
}

c# online