我有一些像这样的代码:为什么Java不会编译这段代码?
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
方面有效!
这是为什么?
这是不正确的..在运行时**这将是'ExampleTwo' ..错误是因为编译器无法在编译时找到该方法 – Anirudha 2013-02-17 07:41:00