2014-10-31 52 views
1
Undergraduate ug = new Undergraduate (「Sam」, 999, 1); 
Person p = (Person) ug // Type casting 
p.writeOutput(); 

UndergraduatePerson的子類。本科的方法writeOutput覆蓋在Person。爲什麼調用UndergraduatewriteOutput,儘管變量p引用了Person類型的對象?爲什麼使用子類方法定義?

+2

多態性。運行時類型被調用。 – 2014-10-31 21:20:29

回答

8

這就是多態性。來自官方tutorials

Java虛擬機(JVM)爲每個變量中引用的對象調用適當的方法。它不調用變量類型定義的方法。這種行爲被稱爲虛擬方法調用並演示了Java語言中重要多態特性的一個方面。

0

Java在那裏很好,並調用undergraduate.writeoutput。除了本科以外,您不能通過超級人員調用人員方法。

相關問題