小白學JAVA《十一》 多型

2021-08-27 18:33:20 字數 936 閱讀 9664

一、概念

相同的行為。不同的實現

二、靜態多型

1.能夠在編譯期間就確定方法被哪乙個物件所執行的過載或重寫(在編譯的時候就知道方法的呼叫)

2.使用過載實現

三、動態多型

1.不能夠在編譯期間就確定方法被哪乙個物件所執行的過載或重寫(在後期傳值後才知道方法如何呼叫)

2.使用動態繫結和重寫實現

四、動態多型的技術基礎

1.向上轉型技術

(1)引用資料型別轉換只能發生在父子之間,不能去玩指鹿為馬的事

(2)由引用資料型別的向上轉型,是指子類向父類轉型,編譯器會自動識別,能自動轉型成功,原因是父類的範圍遠大於子類的範圍

(3)子類與子類之間,不是父子關係,不能轉換

(4)為什麼父類的引用可以指向子類的實現(因為子類的例項一定擁有乙個完整的父類的值資料)

2.instanceof關鍵字(物件判斷表示式)

(1)判斷某個物件是否是某種型別的物件

(2)規避掉在「強制向下轉型」過程中可能會出現的轉型風險

3.動態繫結技術

在物件導向程式開發中,將乙個方法呼叫與該方法所在的類關聯起來

4.向下轉型

(1)必須是父類的引用指向乙個子類的實現

(2)子類的引用最終必須指向相同型別的子類實現

(3)引用資料型別向下轉型是有風險的 ,不是說就一定能轉型成功。如果成功,必須滿足上面兩個條件

五、主要應用

1多型引數

5.1.1當方法的某個形式是乙個引用,與該引用相容的任何物件都可以傳遞給方法,從而允許方法接受不同資料型別的形式引數

5.1.2如果方法中呼叫該物件的乙個被重寫的方法,那麼不同型別的子類物件會表現出不同的體現

2.異構集合

建立乙個不是同一型別,但是有共同父類的資料集合,不同物件的集合稱為異構集合

C 複習要點總結十一 多型(二)

1 物件中的vptr指標什麼時候被初始化?物件在建立的時,由編譯器對vptr指標進行初始化 只有當物件的構造完全結束後vptr的指向才最終確定 父類物件的vptr指向父類虛函式表 子類物件的vptr指向子類虛函式表 二 父類指標步長和子類指標步長不一致時 class parent virtual v...

小白學JAVA《十三》 介面

一 概念 1 訪問修飾符 只能用public 於外部給類附加的功能 2 介面無法例項化,只能由實現類來例項化 3 關鍵字 inte ce implements 4 不允許非抽象方法存在,介面中只能允許抽象方法存在 二 特點 1 介面檔案最後同樣也會被編譯器編譯成 服務介面.class 位元組碼檔案 ...

小白學JAVA《十四》 異常處理

一 異常分類 1 檢查異常,也被稱之為 編譯時異常 由編譯器檢查出來的異常 2 執行時異常,編譯器無法檢查出來,只有程式在執行時丟擲的異常,才是執行時異常 3 錯誤,實際上已經脫離了 異常 的範疇,因為程式設計師無法通過修改 來解決問題,比如記憶體不足 硬碟空間不夠 網線問題等 二 概念 1 是程式...