public class Parent {
....
}
public class Child1 extends Parent {
....
public void foo() {
....
}
}
public class Child2 extends Parent {
....
public void foo() {
....
}
}
此处方法foo()
只存在于Child类中,并且不能添加到Parent类(甚至不是抽象方法)。在这种情况下,当我想调用foo()
方法obj
这是Parent
类的参考,然后我需要使用intanceof
与我想要避免的多个if..else
。在子类中存在但在父类中不存在的调用方法
Parent obj = ...// Object of one of the child classes
obj.foo();
编辑:我需要使用的obj
类型仅Parent
。否则,我将无法调用父类中存在的obj方法。
我的解决方案:,我想的方法是定义一个接口说FooInterface
与foo()
方法,让所有的子类实现它,那么我可能只是类型转换的obj
到该接口和呼叫foo()方法是这样的:
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
有没有更好的方法?或者这个有什么改进?
每当一个方法在孩子中是常见的,它应该放在父母身上。为什么你不把该方法放入抽象类? –
我无法更改'Parent'类,因为我不管理它。 – Learner
然后使用答案中给出的解决方案中所述的接口。 –