一、概念
相同的行為。不同的實現
二、靜態多型
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 是程式...