【发布时间】:2018-11-24 20:08:36
【问题描述】:
public class Parent {
....
}
public class Child1 extends Parent {
....
public void foo() {
....
}
}
public class Child2 extends Parent {
....
public void foo() {
....
}
}
这里的方法foo() 只存在于子类中,不能添加到父类中(甚至不能添加抽象方法)。在这种情况下,当我想在obj 上调用foo() 方法时,这是Parent 类的引用,那么我需要使用intanceof 和多个我想避免的if..else。
Parent obj = ...// Object of one of the child classes
obj.foo();
编辑:我只需要将obj 类型用作Parent。否则我将无法调用父类中存在的 obj 上的方法。
我的解决方案:我正在考虑的方法是定义一个接口说FooInterface 和foo() 方法并让所有子类实现它,然后我可以只键入转换@ 987654333@ 到该接口并像这样调用 foo() 方法:
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
有没有更好的方法?或者对这个有什么改进?
【问题讨论】:
-
当一个方法在子节点中很常见时,它应该放在父节点中。为什么你不把那个方法放在抽象类中??
-
我无法更改
Parent课程,因为我无法管理它。 -
然后使用下面答案中给出的解决方案中说明的界面。
-
能介绍一下Parent和Child的中间类吗?
标签: java oop class-design instanceof