Java零基礎學習-----面向對象(五)

多態的概念

 

多態的概念:

多態主要指同一種事物表現出來的多種形態。

例:

飲料:可樂,雪碧….

圖形:正方形,三角形……

 

多態的語法格式:

父類類型 引用變量名=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不能同時修飾同一個方法。//?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章