一、接口
二、多態
多態是同一個行為具有多個不同表現形式或形態的能力。
2.1 類型轉換
轉換方式
隱式 向上轉型
對于基本數據類型,存儲容量低的可自動向存儲容量高的類型轉換
對于引用變量,子類可被轉換為超類,可被賦給所屬類實現的接口的引用
顯式 向下轉型必須強制類型轉換,是顯示的 場合:賦值轉換 方法調用轉換 算術表達式轉換 字符串轉換
規則
基本類型的轉換
將值從一種類型轉換成另一種類型
引用變量的類型轉換
將引用轉換為另一種類型的引用,不改變對象本身的類型
轉換方式
向上轉型
轉換為任何一個(直接或間接)超類的類型
轉換為對象所屬的類(或其超類)實現的一個接口
向下轉型(唯一情況)
被轉為引用指向的對象的類型
向上轉型(當一個引用被轉為其超類的引用)后,通過它能夠訪問的只有在超類中聲明過的方法。
2.2 方法調用綁定
多態存在的三個必要條件:
繼承/接口實現
重寫/接口方法實現
父類引用指向子類對象/接口類型的引用指向了一個實現此接口的對象,即向上轉型
簡而言之,向上轉型、繼承、重寫是三大前提條件
將一個方法調用同一個方法主體關聯起來被稱作綁定。若程序執行前進行綁定(如果有的話,由編譯器和連接程序實現),叫做前期綁定。在運行時根據對象的類型進行綁定,叫做后期綁定或動態綁定。
在動態綁定中,對象中包含類的信息,編譯器一直不知道對象的類型,但是方法調用機制能找到正確的方法體,并加以調用。
Java中的多態是通過方法的動態綁定機制實現的
只有普通方法調用可以是多態的,成員變量和靜態方法都沒有多態,直接訪問某個域(成員變量),這個訪問將在編譯期進行解析,任何域訪問操作都由編譯器解析。
因此將屬性設為private,不可直接訪問屬性,這里帶來了一個好處,就是可以避免誤以為父類引用能多態的使用子類的屬性。
三、泛型
接口泛型
方法泛型
類泛型
泛型中的通配符
泛型中的限制