多態
- 對象的多態性。
多態在程序中的體現:父類的引用或者接口的引用指向了子類對象
多態的好處:提高了代碼的擴展性
多態的弊端:不能使用子類特有的方法
多態的前提:
1、必須有關系,繼承,實現
2、通常有覆蓋
- 向上轉型
好處:隱藏了子類型,提高代碼的擴展性。
弊端:只能使用父類中的功能,不能使用子類特有功能。功能被限定了
如果不需要面對子類型,通過提高擴展性,或者使用父類的功能即可完成操作,就使用向上轉型
向下轉型
好處:可以使用子類型特有的功能。
弊端:面對具體的子類型,向下轉型有風險。
容易發生ClassCastException。只要轉換類型和對象類型不匹配就會發生
想要安全,必須要進行判斷。判斷一個對象是否匹配某一類型,需要使用一個關鍵字 instanceof 對象 instanceof 類型
什么時候向下轉型:需要子類型的特有方法時。但一定要判斷多態中對成員的調用
1、成員變量
當子父類中出現同名成員變量時。多態調用時,只看調用該成員變量的引用所屬的類中的成員變量。
2、成員函數
出現一模一樣函數時,多態調用:
編譯時,看的是引用變量所屬的類中的方法
運行時,看的是對象所屬的類中的方法
成員方法動態綁定到當前對象上
3、靜態函數
出現一模一樣的函數時
多態調用,
編譯和運行是看引用變量所屬的類中的方法