Java面試題,Java三大特性之一——多態的理解


首先我們知道Java是一門面向對象的語言

面向對象三大特性,封裝繼承多態

封裝、繼承、多態      ↓

無論是學習路線,還是眾人的口語習慣,都是按照這個這樣進行排序,這是有原因的。因為封裝好了才能繼承,封裝和繼承都是為多態做准備的。

 

多態的三個前提條件:

1、繼承關系

2、方法的重寫

3、向上轉型(即父類引用指向子類對象)

 

多態又分為兩種情況,編譯時多態運行時多態。先簡單介紹一下這兩種的區別

編譯時多態:對象引用本類實例

廢話不多直接上圖舉例:

上圖我們看到cat對象和animal對象都是引用的本類實例,也就是說,在方法啟動前,編譯已經確定了上面兩個toString方法分別是誰調用的

 

運行時多態:父類引用指向子類對象

 

上圖是父類引用指向子類對象,也就是向上轉型。這里的toString方法我們知道返回的肯定是子類的方法的結果。這就是Java的運行時多態(接下來是重點,注意看了),Java從實例類開始尋找匹配的方法,如果沒有匹配的方法,沿着繼承關系逐漸往上匹配父類的方法

 

上面的關系捋順再說明多態的好處:

我們看到Cat類是繼承Animal類的,繼承性提高了代碼的可維護性

向上轉型,不同的實例類,產生不同的結果。如果我在定義一個Dog類也是一樣,會輸出Dog的toString。這就是代碼的可拓展性

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM