76.Java中的虛方法調用

我們前面已經知道了,在多態的情況下,聲明爲父類類型的引用變量只能訪問父類中定義過的方法,但如果此變量實際引用的是子類的對象,而子類中又進行了方法覆蓋時,實際調用的是子類中覆蓋後的方法,這種機制稱爲虛方法調用


在使用多態的情況下,有可能出現編譯時類型和運行時的類型不一致的問題,如上面的例子中:
public class CalClass{
 .. …
 public int calPersonBirthYear(Person p) {
  // 根據參數p的年齡來計算出生年代
 }
}


在編譯的時候,方法calPersonBirthYear 的參數類型是Person的,而在運行的時候,可能就是Student 或Teacher或Person或其他的Person子類類型了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章