1.多态概論:某一個事物,在不同時刻表現出來的不同狀态,要想有多态,就必須要有繼承,繼承是多态的前提
舉例:
貓可以是貓的類型。貓 m = new 貓();
貓也是動物的一種,也可以把貓稱為動物。 動物 d = new 貓();
2.多态的前提:
1. 要有繼承的關系
2、要有方法的重寫,如果沒有重寫也是可以的,但是你不重寫就沒有意義
3、要有父類的引用指向子類的對象
格式:
父 f = new 子();
3.多态通路成員特點:
1、成員變量
編譯看左邊,運作看左邊
2、構造方法
建立子類對象的時候,先通路父類的構造方法,先對父類的資料進行初始化
3、成員方法
編譯看左邊,運作看右邊
因為子類的成員方法存在重寫,是以運作通路的時候看右邊
4、靜态的成員方法:
靜态的随着類的加載而加載
由于被static修飾的都是與類有關系的,是以它算不上重寫
是以,編譯的時候看左邊,運作通路的時候也看左邊
總結:隻有通路成員方法的時候是編譯看左邊,運作看右邊,其他的是編譯看左邊,運作看左邊
4.多态的好處:
1.提高了程式的維護性(由繼承保證)
2.提高了程式的擴充性(由多态保證)
5.多态的弊端:
1.不能直接通路子類特有功能 解決方法:轉型
2.不能通過多态去通路父類和子類同名的方法,解決方式:super
6. 多态中的轉型
1.向上轉型(從子到父 父類引用指向子類對象)
格式 Fu5 f = new Zi5();
2.向下轉型
格式 Zi5 z = (Zi5) f;
注意事項:
7.final關鍵字保留父類特色方法