1. 程式人生 > >面向對象-特性之多態

面向對象-特性之多態

調用 style 缺點 語法 gui 引用 表現 col 關系

多態
1.概念:生活中的多態
同一種事物,由於條件不同,則產生不同的結果,事物的多種表現形態
程序中多態
同一個引用類型,使用不同的實例,執行不同的操作
多態發生在繼承關系中
2.使用

父類的引用 子類的實現 例:使用多態進行實例化

Pet pet=new Dog();
Pet pet=new Penguin();
Pet pet=new Cat();


3.多態實現的條件
1)類與類之間存在繼承關系
2)類與接口之間存在實現關系(之後章節)
4.多態實現的步驟

1)編寫父類
2)編寫子類,一定要有子類重寫父類的方法
3)使用時,就可以使用父類的引用類型,子類的實例!!使用多態進行實例化
5.多態實現的方式
1)Pet pet=new Dog();
2)使用父類作為方法的形參實現多態,調用具體方法傳入實參作為子類的實例
3)使用父類作為方法的返回值實現多態,定義方法的返回值為父類,調用方法的返回值為子類的實例
6.優點:程序的可擴展性
缺點:使用多態進行實例化,實例化的對象只能調用子類重寫父類的方法,

子類特有的方法我們無法調用
如何解決弊端?
1.向上類型(自動類型轉換)
Pet pet=new Dog();
好處:隱藏子類型,提供代碼的可擴展型
弊端:只能調用子類重寫父類的方法,子類特有的方法我們無法調用
2.向下類型(強制類型轉換)
Dog dog=(Dog)pet;
dog.catchFlyDisc();

好處:能調用子類特有方法
弊端:向下類型有風險,容易發生異常
java.lang.ClassCastException(類型轉換異常)


解決方法:使用前進行判斷,判斷一個對象是否匹配另一個對象類型
(引用instanceof 語法:對象 instanceof 類型(類名))

面向對象-特性之多態