java多態 我的理解

這幾天在看java基礎,初識多態,寫寫自己的理解和想法

多態 顧名思義 即 一個接口,多種實現,(實現不同的功能)

java多態有兩種

1 編譯時多態 調用被重載的方法,編譯器根據參數的不同,來靜態調用相應的方法

2 運行時多態  父類的某個方法被子類重寫時候,可以產生各自的功能和行爲

如果子類重載父類的方法,那麼運行的時候調用子類的方法。

如果子類繼承父類的方法,那麼編譯的時候,看父類,即向上轉型。運行時候,看子類

eg 運行時多態

貓狗都是動物,且都會叫,他們繼承父類animal ,並且重寫父類方法cry 

貓叫時發出 ”喵喵“  狗叫的時候發出 ”汪汪“,此時的cry方法就會有多種形態。

我定義了一個子類Cat,它繼承了Animal類,那麼後者就是前者是父類。我可以通過

  Cat c = new Cat();

  實例化一個Cat的對象,這個不難理解。但當我這樣定義時:

  Animal a = new Cat();

  這代表什麼意思呢?

  很簡單,它表示我定義了一個Animal類型的引用,指向新建的Cat類型的對象。由於Cat是繼承自它的父類Animal,所以Animal類型的引用是可以指向Cat類型的對象的。那麼這樣做有什麼意義呢?因爲子類是對父類的一個改進和擴充,所以一般子類在功能上較父類更強大,屬性較父類更獨特,

  定義一個父類類型的引用指向一個子類的對象既可以使用子類強大的功能,又可以抽取父類的共性。

  所以,父類類型的引用可以調用父類中定義的所有屬性和方法,而對於子類中定義而父類中沒有的方法,它是無可奈何的;

  同時,父類中的一個方法只有在在父類中定義而在子類中沒有重寫的情況下,纔可以被父類類型的引用調用;

  對於父類中定義的方法,如果子類中重寫了該方法,那麼父類類型的引用將會調用子類中的這個方法,這就是動態連接。


多態性:發送消息給某個對象,讓該對象自行決定響應何種行爲。



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