1,前提:繼承 + 重寫
2,口訣1:父類引用指向子類對象
解釋:父類類型的引用類型變量儲存的是子類類型的對象的位址值
口訣2:編譯看左邊,運作看右邊
解釋:編譯時要看父類是否定義了這個資源,運作時使用的是子類的功能
3,資源使用情況
- 成員變量使用的是父類的
- 成員方法使用的是父類的方法定義,子類的方法體
- 如果多态對象調用的是子類沒有重寫過的方法,方法定義與方法體使用的都是父類的,是以這個不符合多态的前提,直接使用純純的父類對象調用即可
- 靜态資源屬于類資源,随着類的加載而加載,隻會加載一次,優先于對象進行加載,可以通過類名直接調用,被全局所有對象共享,是以靜态不存在重寫的現象,在哪個類定義,就屬于哪個類的資源
- 我們現在學習的多态,把自己看作父類類型,參考“花木蘭替父從軍”
4,異常
- 異常的繼承結構
異常層次結構中的根是Throw able
Error:目前我們編碼解決不了的問題
Exception:異常
編碼異常:為運作代碼就報錯了,強子要求處理
運作時異常:運作代碼才報錯,可以通過編譯,不強制要求處理
5,異常的解決方案
- 捕獲處理 try – catch – 自己解決
- 向上抛出throws – 交給别人解決
- 不能直接把異常抛給main( ),因為調用main( )是JVM,沒人解決了
6,抽象abstract
- 抽象類
- 抽象類是被abstract修飾的類
- 抽象類對其中的方法不做限制:全譜/全抽/半普半抽
- 抽象類不可以執行個體化 – 建立對象
- 如果一個子類繼承了一個抽象父類,有兩種解決方案:繼續抽象/實作抽象父類的所有抽象方法,變成普通子類
- 抽象方法
- 抽象方法是被abstract修飾的方法
- 抽象類沒有方法體{ },以分号結束