Java多態性

概念

什麼是多態性?多態性是指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容的函數。
實現的前提?父類可以引用子類,也叫向上類型轉換(upcasting)
在這裏插入圖片描述

機制

使用動態綁定機制(Dynamic binding),下面以一個例子來理解動態綁定。

class Instrument{
	void play() {
		System.out.print(what()+" is playing!");
	}
	String what() {
		return "Instrument";
	}
}
class Wind extends Instrument{
	String what() {
		return "Wind";
	}
}
public class Main{
	public static void main(String[] args) {
		Instrument i=new Wind();
		i.play();
	}
}

運行結果

在這裏插入圖片描述
當調用play()時,其中會調用到what(),由於Java的動態綁定機制,雖然i已經upcasting到基類Instrument,但是程序運行過程仍會綁定到Wind類的what函數。

動態綁定機制的理解:創建的Wind實例並不會因爲upcasting而真的轉型爲基類類型,實例仍然在存儲在堆空間中,且創建對象時會創建其元數據class信息存儲在方法區,運行過程中通過這些信息幫助函數判斷具體動態綁定到哪個方法。

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