在类上调用非超类方法

时间:2019-04-02 17:39:17

标签: java extends superclass

我有扩展A的类B。我声明A的对象并将其初始化为B。我想调用不在超类中的方法。

有简单的方法吗? 还是我每次都需要投射?

A类//无权访问。

Class B extends A {
    methodNotInClassA();
}

我知道这可行:

Class C {

    A obj;
    method{
        obj = new B();
        ((B)obj).methodNotInClassA();
    }

}

但是是否存在更简单更好的东西?

1 个答案:

答案 0 :(得分:0)

可悲的是,您必须每次都进行强制转换,或者必须创建一个实际上为B类型的变量。您可以检查类型为A的变量是否为类型B,然后使临时变量如下所示:

if(obj instanceof B) {
    B tmp = (B) obj;

    // Code using tmp instead of obj
}

但这就是您将要获得的最漂亮的东西。