在类上调用非超类方法

问题描述 投票:0回答:1

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

有一个简单的方法吗?或者我每次都需要施展?

A类//无权访问它。

Class B extends A {
    methodNotInClassA();
}

我知道这有效:

Class C {

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

}

但是存在更简单和更好的事情吗?

java extends superclass
1个回答
0
投票

可悲的是,你需要每次投射,或者你必须创建一个实际上类型为B的变量。您可以检查类型为A的变量是否为B类型,然后创建一个临时变量:

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

    // Code using tmp instead of obj
}

但那只是你要得到的最漂亮的。

© www.soinside.com 2019 - 2024. All rights reserved.