日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java继承覆盖总结

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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
  • class?SuperClass?{??
  • ????private?int?number;??
  • ??
  • ??
  • ????public?SuperClass()?{??
  • ????????this.number?=?0;??
  • ????}??
  • ??
  • ??
  • ????public?SuperClass(int?number)?{??
  • ????????this.number?=?number;??
  • ????}??
  • ??
  • ??
  • ????public?int?getNumber()?{??
  • ????????number++;??
  • ????????return?number;??
  • ????}??
  • }??
  • ??
  • class?SubClass1?extends?SuperClass?{??
  • ????public?SubClass1(int?number)?{??
  • ????????super(number);??
  • ????}??
  • ??
  • }??
  • ??
  • class?SubClass2?extends?SuperClass?{??
  • ????private?int?number;??
  • ??
  • ??
  • ????public?SubClass2(int?number)?{??
  • ????????super(number);??
  • ????}??
  • ??
  • }??
  • ??
  • public?class?SubClass?extends?SuperClass?{??
  • ??
  • ????private?int?number;??
  • ??
  • ??
  • ????public?SubClass(int?number)?{??
  • ????????super(number);??
  • ????}??
  • ??
  • ??
  • ????public?int?getNumber()?{??
  • ????????number++;??
  • ????????return?number;??
  • ????}??
  • ??
  • ??
  • ????public?static?void?main(String[]?args)?{??
  • ????????SuperClass?s?=?new?SubClass(20);??
  • ????????SuperClass?s1?=?new?SubClass1(20);??
  • ????????SuperClass?s2?=?new?SubClass2(20);??
  • ????????System.out.println(s.getNumber());??
  • ????????System.out.println(s1.getNumber());??
  • ????????System.out.println(s2.getNumber());??
  • ????????//結論一:多態時,當子類覆蓋了父類的方法,使用子類覆蓋的方法??
  • ????????//結論二:當子類覆蓋父類的成員變量時,父類方法使用的是父類的成員變量,子類方法使用的是子類的成員變量??
  • ????}??
  • ??
  • }??
  • ?

    執行輸出:

    1
    21
    21

    轉載于:https://www.cnblogs.com/ziq711/p/5372474.html

    總結

    以上是生活随笔為你收集整理的java继承覆盖总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。