Я знаю, что могу вызвать дочерний метод из родительского экземпляра, но мне нужно вызвать 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
].