调用存在于子类中但不存在于父类中的方法

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)

编辑:我需要使用类型objParent唯一的.否则我将无法调用父类中存在的obj上的方法.


我的解决方案:我想的方法是定义一个接口,FooInterfacefoo()方法说,让所有子类实现它,然后我可以输入强制转换obj到该接口并调用foo()方法,如下所示:

if(obj instanceof FooInterface){
    ((FooInterface)obj).foo();
}
Run Code Online (Sandbox Code Playgroud)

有更好的方法吗?或者对这个有什么改进?

Lea*_*ner 2

我最终采用的方法是用方法定义一个接口FooInterfacefoo()并让所有子类实现它,然后我可以将 obj 类型转换为该接口并调用foo()方法,如下所示:

Parent obj = ...// Object of one of the child classes
.....
if(obj instanceof FooInterface){
    ((FooInterface)obj).foo();
}
Run Code Online (Sandbox Code Playgroud)