java多型的理解

2021-08-13 03:28:53 字數 1066 閱讀 9362

多型的定義:指允許不同類的物件對同一訊息做出不同的響應。

上面的說法可能有點難懂,借用網上乙個例項:

比方說按下 f1 鍵這個動作,如果當前在 flash 介面下彈出的就是 as 3 的幫助文件;如果當前在 word 下彈出的就是

word 幫助;在 windows 下彈出的就是 windows 幫助和支援。同乙個事件發生在不同的物件上會產生不同的結果。

這樣就很好理解了,通俗點講,同一訊息根據物件的不同也會有不同的結果(傳送訊息就是呼叫方法)。

實現多型的方式稱為動態繫結,動態繫結指的是程式中定義的引用變數在編碼的時候並不確定,而是在程式的執行的時候才確定,引用呼叫的方法也不確定,也只有在程式執行的時候才能夠確定。這樣就可以讓引用動態繫結到不同的類上。

多型的實現基礎是向上轉型,向上轉型是指將父類的引用指向子類的物件。

class father

} class son extends father

}

現在有兩個類,乙個是father類,乙個是son類,son類繼承了father類。

son son = new son();//子類的定義

father father = new son();//向上轉型

下面就是向上轉型,這樣做有乙個非常大的好處,father是父類的引用,當然他可以使用父類所有的方法,也可以使用子類的方法,而且當有多個子類的時候,父類的引用可以隨時指向另乙個子類。比如說現在有乙個son2類,我們只需要使father father = new son2();這樣我們就可以使用son2中方法了。但是向上轉型也有缺點,他會丟失子類特有的方法。

指向子類的父類引用由於向上轉型了,它只能訪問父類中擁有的方法和屬性,而對於子類中存在而父類中不存在的方法,該引用是不能使用的,儘管是過載該方法。若子類重寫了父類中的某些方法,在呼叫該些方法的時候,必定是使用子類中定義的這些方法(動態連線、動態呼叫)。

實現多型的三個必要條件:繼承、重寫、向上轉型。

對於引用子類的父類型別,在處理該引用時,它適用於繼承該父類的所有子類,子類物件的不同,對方法的實現也就不同,執行相同動作產生的行為也就不同。

Java 多型的理解

物件導向程式設計有三個特徵,即封裝 繼承和多型。封裝隱藏了類的內部實現機制,從而可以在不影響使用者的前提下改變類的內部結構,同時保護了資料。繼承是為了重用父類 同時為實現多型性作準備。那麼什麼是多型呢?要理解多型性,首先要知道什麼是 向上轉型 我定義了乙個子類cat,它繼承了animal類,那麼後者...

Java多型的理解

要想清楚的理解什麼是多型,就必須要了解 向上轉型 這個概念。下面我們通過乙個例子來介紹向上轉型。public class person protected void sleep public void play public class student extends person public c...

java多型的理解

public string show d obj public string show a obj class b extends a public string show b obj public string show a obj class c extends b class d extend...