让我们看一下这段代码
MyClass object;
object=new MySubClass();
MySubClass扩展MyClass的位置。
在此之后,我想调用MySubClass的方法
object.myMethod();
我收到一个编译错误,但是在运行时应该可以。没有这样的显式转换,如何调用myMethod?
(((MySubClass)object).myMethod()
最佳答案
如果方法是在子类中定义的,那么您将需要instanceof子类-
MyClass object; // <-- Make this MySubClass object; **OR**
object=new MySubClass();
// instanceof
if (object instanceof MySubClass) {
MySubClass msc = (MySubClass) object;
msc.doSomeMethod(); // <--
}
或者您可以在
MyClass
中使用abstract method-public abstract class MyClass {
public abstract void doSomeMethod();
}
当然,
MySubClass
必须仍然具有doSomeMethod()
public class MySubClass extends MyClass {
public void doSomeMethod() {
System.out.println("Hello");
}
}
那么你可以使用
object.doSomeMethod();
关于java - Java:调用未定义类型的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22944821/