我有扩展A的B类。我声明A的对象并将其初始化为B.我想调用不在超类中的方法。
有一个简单的方法吗?或者我每次都需要施展?
A类//无权访问它。
Class B extends A {
methodNotInClassA();
}
我知道这有效:
Class C {
A obj;
method{
obj = new B();
((B)obj).methodNotInClassA();
}
}
但是存在更简单和更好的事情吗?
可悲的是,你需要每次投射,或者你必须创建一个实际上类型为B
的变量。您可以检查类型为A
的变量是否为B
类型,然后创建一个临时变量:
if(obj instanceof B) {
B tmp = (B) obj;
// Code using tmp instead of obj
}
但那只是你要得到的最漂亮的。