java继承覆盖总结
?
??
? Java基礎(1)?版權聲明:本文為博主原創文章,未經博主允許不得轉載。
java的繼承與覆蓋基本是java筆試中常出的題,也比較繞,我這里對java的繼承覆蓋做一個總結
1.構造函數:
??????? 當子類繼承一個父類時,構造子類時需要調用父類的構造函數,存在三種情況
??????? (1),父類無構造函數或者一個無參數構造函數,子類若無構造函數或者有無參數構造函數,子類構造函數中不需要顯式調用父類的構造函數,系統會自動在調用子類構造函數前調用父類的構造函數
?????????(2),父類只有有參數構造函數,子類在構造方法中必須要顯示調用父類的構造函數,否則編譯出錯
?????????(3),父類既有無參數構造函數,也有有參構造函數,子類可以不在構造方法中調用父類的構造函數,這時使用的是父類的無參數構造函數
???????????//以上三個結論已經過代碼驗證
2.方法覆蓋:
??????????(1)子類覆蓋父類的方法,必須有同樣的參數返回類型,否則編譯不能通過
??????????(2)子類覆蓋父類的方法,在jdk1.5后,參數返回類可以是父類方法返回類的子類
?????????(3)子類覆蓋父類方法,可以修改方法作用域修飾符,但只能把方法的作用域放大,而不能把public修改為private
??????????(4)子類方法能夠訪問父類的protected作用域成員,不能夠訪問默認的作用域成員
?????????(5)子類的靜態方法不能隱藏同名的父類實例方法
?????????(6)java與C++一樣,繼承的方法具有多態性
?????????//以上6個結論已經過代碼驗證
3.成員覆蓋:
?????????(1)當子類覆蓋父類的成員變量時,父類方法使用的是父類的成員變量,子類方法使用的是子類的成員變量
??????????這個聽起來很容易理解的一回事,但是實際使用過程中很多人容易搞混:尤其是在多態的時候,調用一個被繼承的方法,該方法訪問是一個被覆蓋的成員m,那么方法中到底是訪問了父類的成員還是子類的成員m?結論是,若實際調用的是父類的方法,就使用了父類的該成員m,若實際調用的是子類的方法,就使用子類的成員m,記住一句,每個類使用成員都相當于在前面加了 一個this指針。
?????????//以上1個結論已經過代碼驗證
??????? 我在論壇上看到下面例子,理解上面,你就能夠很好得出答案了:
?
[c-sharp]?view plain?copy?
執行輸出:
1
21
21
轉載于:https://www.cnblogs.com/ziq711/p/5372474.html
總結
以上是生活随笔為你收集整理的java继承覆盖总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2-1:套接字(Socket)编程之必备
- 下一篇: 3-6:类与对象下篇——构造函数中的初始