我有一些像這樣的代碼:爲什麼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