首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 抽象類別與多態:為什麼父類別參考可呼叫子類別覆寫方法?

     編輯:程式設計綜合問答

疑問代碼

MotoVehicle moto = motoMrs.MotoleaseOut(MotoType);
float money = moto.calRent(days);

這裡 moto 是父類別 MotoVehicle 型態的變數,卻能呼叫子類別(Car 或 Bus)覆寫後的 calRent() 方法,這是 Java 的多態機制。

原理解析

  • MotoleaseOut() 回傳的是子類別物件,但被指派給父類別型態變數(向上轉型)。
  • 變數能呼叫的方法由「宣告型態」決定,但實際執行哪個方法,由「執行時期物件的實際型態」決定。
  • 這稱為「動態方法分派」(Dynamic Method Dispatch),是 Java 多態的核心。

範例結果

  • 若 moto 實際是 Car 物件,就執行 Car.calRent()。
  • 若 moto 實際是 Bus 物件,就執行 Bus.calRent()。



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved