多態的概念
多態的概念:
多態主要指同一種事物表現出來的多種形態。
例:
飲料:可樂,雪碧….
圖形:正方形,三角形……
多態的語法格式:
父類類型 引用變量名=new 子類類型();
如:
Shape sr=new Rect();
Sr.show();
多態的特點:
1.當父類類型引用指向子類類型的對象時,父類類型的引用可以直接調用父類獨有的方法。
2.當父類類型引用指向子類類型的對象時,父類類型的引用不可以直接調用子類獨有的方法。
3.對於父子·類都有的非靜態方法來說,編譯階段調用父類版本,運行階段調用子類重寫的版本(動態綁定)。
(靜態的都是斜體)
4.對於父子類都有的靜態方法來說,編譯和運行階段都是調用父類版本。
引用數據類型之間的轉換
引用數據類型之間的轉換方式有兩種:自動類型轉換和強制類型轉換
1.自動類型轉換主要指小類型向大類型的轉換,也就是子類轉換爲父類,也叫做向上轉型
2.強制類型轉換主要指大類型向小類型的轉換,也就是父類轉爲子類,也叫做向下轉型或顯式類型轉換。
注意事項:
引用數據類型之間的轉換必鬚髮送在父子類之間,否則編譯報錯。
若強轉並不是引用真正指向的數據類型時則編譯通過,運行階段發送類型轉換異常。
爲了避免上述錯誤的發送們應該在強轉之前進行判斷,格式如下:
IF(引用變量 instanceof 數據類型)
判斷引用變量指向的對象是否爲後面的數據類型
多態的實際意義
多態的實際意義在於屏蔽不同子類的差異性,實現通用的編程帶來不同的效果
抽象方法和抽象類的概念
抽象方法指不能具體實現的方法並且使用abstract關鍵字修飾,也就是沒有方法體
具體格式如下:
訪問權限 abstract 返回值類型 方法名(形參列表)
例:public abstract void cry();
抽象類的概念:
抽象類主要指不能具體實例化的類並且使用abstract關鍵字修飾,也就是不能創建對象。
抽象類和抽象方法的關係:
抽象類可以有成員變量,構造方法,成員方法;
抽象類中可以沒有抽象方法,也可以有抽象方法;
擁有抽象方法的類必須是抽象類,因此真正意義上的抽象類應該是具有抽象方法並且使用abstract關鍵字修飾的類。
抽象類的實際意義:
1.抽象類的實際意義不在於創建對象而在於繼承
2.當一個類繼承抽象類後必須重寫抽象方法,否則該類也變成抽象類,也就是抽象對子類具有強制性和規範性,因此叫做模板設計模式。
開發經驗分享
多態是面向對象的第三個特徵。
在以後的開發中推薦使用多態的格式,此時父類類型引用直接調用的所有方法一定是父類中擁有的方法,若以後更換子類時,只需要將new關鍵字後面的子類類型修改而其他地方無需改變就可以立即生效,從而提高了代碼的可維護性和可擴展性。
缺點:父類引用不能直接調用子類獨有的方法,若調用則需要強制類型轉換
筆試考點
Private abstract double getLix();
private和abstract不能同時修飾一個方法。
final和abstart不能同時修飾一個方法。
Static和abstract不能同時修飾同一個方法。//?