我有一些这样的代码:
abstract class ExampleOne {
int dataOne = 1000;
abstract void display();
}
class ExampleTwo extends ExampleOne {
int dataTwo;
ExampleTwo(int varOne) {
dataTwo = varOne;
}
public void disp() {
System.out.println("Testing");
}
public void display() {
System.out.println(dataOne);
}
}
class Example {
public static void main(String args[]) {
ExampleOne obj = new ExampleTwo(20);
obj.disp();
obj.display();
}
}
当我编译这个时,我得到一个错误:
obj.disp();
^
symbol: method disp()
location: variable obj of type ExampleOne
为什么会这样?
我将实例分配ExampleTwo
给ExampleOne
,为什么 Java 不选择ExampleOne
实例而不是ExampleTwo
?
同样的概念适用于dynamic polymorphism
!
为什么会这样?