Вызов toString () Дочерний метод из родительского - PullRequest
0 голосов
/ 18 октября 2018

Я знаю, что могу вызвать дочерний метод из родительского экземпляра, но мне нужно вызвать toString() дочерний из родительского экземпляра, я просто не могу понять, как это определить.

Например:

class Animal {

// Some code

}

class Chicken extend Animal{

String toString(){

return "I'm a Chicken";
}
}

class Duck extend Animal{

String toString(){

return "I'm a Duck";
}
}

Я знаю, что могу назвать ребенка как Animal cat = new Cat()

Но моя проблема в том, что мой посвященный зависит от другого посвященного, например:

class Farm{

    private Animal animal;

    public Farm(Animal animal){
    this.animal = animal;
    }
    }

Поэтому, когда мне нужно вызвать ChickenFarm () , который является подклассом из Farm.class Мне нужно получить методы из Chicken.claas вместо *Animal.class`.

Есть ли какой-то способ, который я пропустил?


Обновление:

Мне не нужно делать большой выбор дляклиент, что я имею в виду, что существует *Farm.class классов.

Таким образом, клиент будет вызывать только Farm.class с типом enum или чем-то еще, как я могу определить, какой ребенок использовать, зависит оттип Или что-то, например, (Type.Chicken) отправится в команду [ChickenFarm.class и Chicken.class].

1 Ответ

0 голосов
/ 18 октября 2018

Я предлагаю определить интерфейс IAnimal с методами, которые должны реализовать животные.

Затем:

класс Animal реализует IAnimal

и

класс Farm реализует IAnimal

, затем все подклассы Animal и Farm (а также ChickenFarm) должен реализовывать методы aninmals.

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