1.多態:是同一個行為具有多個不同表現形式或形態的能力。 多態就是同一個介面,使用不同的實例而執行不同操作,如圖所示: 多態性是對象多種表現形式的體現。 2.多態作用: 1. 消除類型之間的耦合關係 2. 可替換性 3. 可擴充性 4. 介面性 5. 靈活性 6. 簡化性 3.多態的三個必要條件: ...
1.多態:是同一個行為具有多個不同表現形式或形態的能力。
多態就是同一個介面,使用不同的實例而執行不同操作,如圖所示:
多態性是對象多種表現形式的體現。
2.多態作用:
- 1. 消除類型之間的耦合關係
- 2. 可替換性
- 3. 可擴充性
- 4. 介面性
- 5. 靈活性
- 6. 簡化性
3.多態的三個必要條件:
- 繼承
- 重寫
- 父類引用指向子類對象
4.多態處理屬性
父類有,子類也有,獲取的是父類的屬性
父類有,子類沒有,獲取的是父類的屬性
父類沒有,子類有,獲取不到
父類沒有,子類沒有,獲取不到
註意:編譯看左邊,運行看左邊
編譯器編譯完成之後,類型確定,但是對象無法確定,只有在運行的時候,new什麼對象,就是什麼對象
5.多態處理方法
父類有,子類也有,獲取的是子類的方法 (方法重寫)
父類有,子類沒有,獲取的是父類的方法
父類沒有,子類有,獲取不到
父類沒有,子類沒有,獲取不到
註意:編譯看左邊,運行看右邊 (方法重寫)
6.多態的體現形式:
向上轉型:父類的引用指向子類的對象
父 f = new 子();
向下轉型:把父類引用執行的子類對象強制轉為子類類型
子 z = (子)f;
註意:無論是基本類型還是引用類型,小轉大都是自動的,大轉小都是強制的,
註意:類型越抽象,功能越少,類型越具體,功能越強大
註意:引用類型之間做轉換,必須要有繼承關係
7.類型轉換
(1):自動轉換 向上轉型
子類對象轉為父類類型
語法: 父類 父類對象 = 子類實例,
(2):強制轉換 向下轉型
把父類引用子類的對象轉為子類本身(父類對象變為子類對象,)
語法: 子類 子類對象 = (子類)父類實例,強制
實際開發中,多態很常用,創建子類對象,儘量使用多態來創建,可以提高代碼的靈活性和擴展性
說明:利用封裝,繼承,多態的知識寫一個Java程式
題目要求:
編寫程式實現比薩製作。需求說明編寫程式,接收用戶輸入的信息,選擇需要製作的比薩。可供選擇的比薩有:培根比薩和海鮮比薩。
實現思路及關鍵代碼
(1)分析培根比薩和海鮮比薩
(2)定義比薩類
(3)屬性:名稱、價格、大小
(4)方法:展示
(5)定義培根比薩和海鮮比薩繼承自比薩類
(6)定義比薩工廠類,根據輸入信息產生具體的比薩對象