我是Java的新手并且在设计问题上苦苦挣扎.我知道使用instanceof可能表示设计缺陷,我理解经常给出的Animal/Dog/Cat类作为例子,替换bark()和meow()使用makenoise()等.
我的问题是,如果我需要根据子类的类型调用没有相应方法的方法,那么什么是合理的设计?例如,如果我想调用一个新方法,biteleash()如果该类是a,Dog但如果它是一个什么都不做,该Cat怎么办?
我确实考虑biteleash()过Animal什么都不做,并且覆盖它Dog,但是有许多这样的方法,所以它似乎是一个笨重的解决方案.类似地,如果调用者需要根据它所拥有的子类做一些不同的事情,例如.如果子类是一个终止Cat?是instanceof可以接受的这里,还是有更好的办法?
public class Animal {
String name;
public Animal(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void makeNoise() {
System.out.println("Some noise for a generic animal!");
}
}
public class Cat extends Animal {
public Cat(String name) {
super(name);
}
@Override
public void makeNoise() {
System.out.println("Meow"); …Run Code Online (Sandbox Code Playgroud)