public class Human {
public void drown(Animal animal) {
if (animal instanceOf Fish) {
return;
} else {
animal.die();
}
}
}
public abstract class LandAnimal extends Animal{...}
public class Tiger extends LandAnimal{...}
public abstract class Fish extends Animal {...}
public class Trout extends Fish {...}我想过要添加一个方法
public abstract boolean drownable() {...}在Animal类中,但我不能访问Animal类的代码。据我所知,使用instanceOf被认为是糟糕的OOP实践。在这种情况下,如何避免使用instanceOf?谢谢。
发布于 2013-06-16 01:43:37
方法可以根据它们的参数进行重载。您可以使用两种不同的方法:
public void drown(Fish f) {
return;
}
public void drown(LandAnimal a) {
a.drown();
}然而,应该注意的是,这使得确定某些动物是否会被淹没是Human类的责任,正如其他答案所示,这是有争议的。
https://stackoverflow.com/questions/17126168
复制相似问题