面向對象的三大特征:封裝叹阔、繼承截酷、多態(tài)
父類類型范圍>子類類型范圍
多態(tài)的概念:
同一個類型的對象蔓同,執(zhí)行同一個行為饶辙,在不同的狀態(tài)下會表現出不同的行為特征
多態(tài)的識別技巧:
對于方法的調用:編譯看左邊,運行看右邊
對于變量的調用:編譯看左邊斑粱,運行看左邊
多態(tài)的使用前提:
1.必須存在繼承或實現關系
2.必須存在父類類型的變量引用子類類型的對象
3.需要存在方法重寫
優(yōu)勢:
在多態(tài)形式上弃揽,右邊對象可以實現組件化切換,業(yè)務功能也隨之改變则北,便于擴展和維護矿微。可以實現類與類的解耦尚揣;
實際開發(fā)的過程中涌矢,父類類型作為方法形式參數,傳遞子類對象給方法快骗,可以傳入一切子類對象進行方法的調用蒿辙,更能體現出多態(tài)的擴展性和便利。
Java建議在進行強制類型轉換滨巴,編譯階段一定不報錯!
但是運行階段可能出現:類型轉換異常ClassCastException
Java建議在進行強制類型轉換之前先判斷變量的真實類型,在強制類型轉換俺叭!
變量 instance of 類型:判斷前面的變量是否是或者其子類類型才會返回true
弊端:不能直接調用子類的獨有功能 恭取,所以要進行強制類型轉換
為了解決多態(tài)的弊端,那么就要判斷強制類型轉換時的真實類型
格式:if(變量 instance of 真實類型){
真實類型 對象名稱 = (真實類型) 之前的對象名稱;
}
總結:有繼承或者實現的兩個類型就可以進行強制類型轉換熄守,編譯階段一定不會報錯
但是運行階段可能會實現:類型轉換異常 ClassCastException
Java建議在進行強制類型轉換轉換之前先判斷變量的真實類型蜈垮,在進行強制類型轉換。
變量 instanceof 類型:判斷前面的變量是否是后面類型或者是其子類才會返回true
問題:面向對象思想設計一個電腦對象裕照,可以接入兩個USB設備
(鼠標攒发、鍵盤? 實現接入,調用獨有功能晋南,拔出)