我有扩展A的类B。我声明A的对象并将其初始化为B。我想调用不在超类中的方法。
有简单的方法吗? 还是我每次都需要投射?
A类//无权访问。
Class B extends A {
methodNotInClassA();
}
我知道这可行:
Class C {
A obj;
method{
obj = new B();
((B)obj).methodNotInClassA();
}
}
但是是否存在更简单更好的东西?
答案 0 :(得分:0)
可悲的是,您必须每次都进行强制转换,或者必须创建一个实际上为B
类型的变量。您可以检查类型为A
的变量是否为类型B
,然后使临时变量如下所示:
if(obj instanceof B) {
B tmp = (B) obj;
// Code using tmp instead of obj
}
但这就是您将要获得的最漂亮的东西。