Lea*_*ner 6 java oop class-design instanceof
public class Parent {
....
}
public class Child1 extends Parent {
....
public void foo() {
....
}
}
public class Child2 extends Parent {
....
public void foo() {
....
}
}
Run Code Online (Sandbox Code Playgroud)
这里的方法foo()只存在于Child类中,不能添加到Parent类(甚至不是抽象方法).在这种情况下,当我想调用类的引用的foo()方法时obj,Parent我需要使用intanceof多个if..else我想避免的方法.
Parent obj = ...// Object of one of the child classes
obj.foo();
Run Code Online (Sandbox Code Playgroud)
编辑:我需要使用类型obj为Parent唯一的.否则我将无法调用父类中存在的obj上的方法.
我的解决方案:我想的方法是定义一个接口,FooInterface用foo()方法说,让所有子类实现它,然后我可以输入强制转换obj到该接口并调用foo()方法,如下所示:
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
Run Code Online (Sandbox Code Playgroud)
有更好的方法吗?或者对这个有什么改进?
我最终采用的方法是用方法定义一个接口FooInterface,foo()并让所有子类实现它,然后我可以将 obj 类型转换为该接口并调用foo()方法,如下所示:
Parent obj = ...// Object of one of the child classes
.....
if(obj instanceof FooInterface){
((FooInterface)obj).foo();
}
Run Code Online (Sandbox Code Playgroud)