我知道我可以从父实例调用子方法,但是我需要从父实例调用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;
}
}
因此,当我需要调用 Farm.class 的子类 ChickenFarm()时,我需要从Chicken.claas
获取方法,而不是* Animal.class `。
有什么我想念的方式吗?
更新:
我不需要对客户端做出很多选择,我的意思是说,*Farm.class
类很多。
因此,客户端将仅使用类型为Farm.class
的{{1}}进行呼叫,如何根据类型确定要使用哪个孩子,或者例如(enum
)之类的内容团队[Type.Chicken
和ChickenFarm.class
]。
答案 0 :(得分:0)
我建议使用动物应实现的方法来定义接口 IAnimal 。
然后:
动物类实现了IAnimal
和
类Farm实现了IAnimal
然后,Animal和Farm(以及ChickenFarm)的所有子类都必须实现aninmals方法。