與其明天開始,不如現在行動!
文章目錄
- 多態
- 多態成立的條件
- 細節
- 繼承
- 💎總結
多態
多態成立的條件
- 存在繼承關系或者實現關系
- 子類重寫父類的方法
- 父類引用指向子類對象
細節
通過父類的引用調用子類的對象
Animal animal = new Dog();
-
animal是向上轉型的(隱式轉換)
-
通過animal調用父類和子類都有的成員變量時,調用的是父類的成員變量
-
不能調用子類獨有的成員變量,編譯時期就會報錯
-
通過animal調用父類和子類都有的成員方法時,調用的是子類的成員變量
-
子類沒有重寫父類的方法,就會調用父類的方法
-
子類引用指向父類對象時向下轉型,此時必須強制轉換為子類
School s = new Classes(); Classes c = (Classes) s;//不能是以下這種轉換,運行會報錯 Classes c = (Classes) new School(); //?
繼承
- 在子類可以增加域、增加方法或者覆蓋超類方法,但是絕對不能刪除繼承的任何域和方法
- 父類沒有無參構造并且子類構造沒有顯式調用父類其它構造,編譯器會報錯
- Java不支持多繼承
- 一個類聲明了final,其它的類就不能繼承這個類,其中的方法也會被聲明為final,但是變量不會。
- 只能在繼承層次內進行類型轉換
- 在將超類轉換子類之前,應該使用
instanceof
進行檢查
抽象
-
類即使不含有抽象方法,也可以設置為抽象類
-
抽象類不能實例化,但是可以引用一個非抽象的子類對象的實例
// Person抽象,Student繼承Person類而且不抽象 Person p = new Student();
修飾符
- public—對所有類可見
- protected—對本包和所有子類可見
- 默認(不需要修飾符)—對本包可見
- private—僅本類可見
對象包裝
- Integer
- 對象包裝類是不可變的,一旦構造了對象包裝類,就不允許更改包裝在其中的值
- 對象包裝器是final的,因此不能定義他們的子類
- 如果在一個條件表達式中同時使用Integer和Double,Integer就會自動拆箱提升為Double,再裝箱為Double
- 裝箱和拆箱是編譯器執行的,而不是虛擬機
💎總結
本文中若是有出現的錯誤請在評論區或者私信指出,我再進行改正優化,如果文章對你有所幫助,請給博主一個寶貴的三連,感謝大家😘!!!