我有一个父类(super class),比如说BaseClass和两个子类,比如说SubclassA和SubclassB,它们没有任何其他关系他们之间但他们的父类之间。
在我的代码中的很多地方,我需要调用两个子类都具有但父类没有的方法......并且我发现自己重复了很多代码,如下所示:
if (obj instanceof SubclassA) {
// stuff
} else if (obj instanceof SubclassB) {
// same stuff
}
第一个想法应该是将这些“东西”放入父类(super class)中的方法中,但我不能,因为该父类(super class)是不具有该行为的其他子类的父类......
那么...有没有办法避免重复该代码?
也许两个子类的共同父类(super class)本身就是父类(super class)的子类?
最佳答案
我建议将该方法提取为父类中的抽象方法(如果父类是抽象的),或者只是在子类中重写的方法。如果这是不可能的,或者是可取的,我建议添加一个通用的抽象类来扩展父类,该类只有两个子类通用的方法,然后由两个子类扩展。
如果添加和更改父类可能是一个问题,您可以使用一个由两个子类实现的接口(interface)来执行相同的操作,并且在您需要调用代码的地方,您只需转换为给定的接口(interface)并调用所需的方法。
类似这样的事情:
interface CommonInterface {
void commonMethod();
}
class SubClassB implements CommonInterface {
void commonMethod() {
// implementation
}
}
class SubClassA implements CommonInterface {
void commonMethod() {
// implementation
}
}
//...
if (obj instanceof CommonInterface) {
((CommonInterface)object).stuffCall();
}
关于java - 父类(super class)的子方法 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21112438/