C # вызов той же функции на подклассах - PullRequest
0 голосов
/ 15 июня 2019

C # Упрощенный пример .

Иерархия классов: Animal -> Pet -> Dog

В каждом классе есть метод Eat(), который выполняет что-то определенное для этого уровня иерархии.

Когда я звоню Dog.Eat(), мне нужно Pet.Eat(), тогда Animal.Eat() вызывается в таком порядке.

Я попытался добавить ко всем подклассам:

 public override void Eat() {
    base.Eat();
 }

и на базе Animal:

 public virtual void Eat(){

 }

Это не кажется правильным, так как я получаю предупреждение, что я должен использовать ключевое слово "new" в Dog.Eat(), поскольку оно скрывает базу Eat()

1 Ответ

1 голос
/ 15 июня 2019

Вы можете попробовать использовать 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" );
    }
}

c # онлайн

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...