繼承與抽象類

子類繼承父類

  • 子類可以訪問父類的非私有成員變量,非私有成員方法,構造方法不能繼承。
  • 子類擁有父類的所有的屬性和方法:私有的通過get set直接訪問 非私有的直接訪問
  • 子類可以加入特有的成員
  • Java只支持單繼承,支持多層繼承

Super

只能直接訪問父類 不能訪問父類的父類

- *繼承中父子類出現同名變量
  訪問父類變量 super.變量
- *繼承中父子類出現同名方法

 可以通過super.方法名() 調用父類的原有的再繼續添加特有的
- *繼承中父子類中構造方法的關係

 a.在創建子類對象的時候,調用子類任何構造方法都會先執行父類的無參構造,如果父類還有父類,則先執行祖父類的無參構造。

 C.super()必須放在構造方法第一行

 D.子類只能調用一次父構造,如果父類有多個構造方法子類調用一個就可以。調用父類構造的目的:在創建子類對象時,父類的成員變量也會被開闢空間,這些空間也要被初始化。

 E.父類手動寫上了有參構造方法時不會再默認添加無參構造方法,子類繼承後會報錯是因爲找不到父類的無參構造。

 F.構造方法第一行 this() super()不能同時存在,任意選取一個保證子類構造方法調用到父類的構造方法即可。

子類的構造方法和set get:
 無參構造:
  添加super();
 有參構造:
    參數列表傳遞父類參數 子類特有參數
  Super(父類參數);
  this.子類參數=…;
Set get:
 父類中已經set get 的參數父類中不必再set get 子類特有的參數 set get

This 與super:

    this.成員變量       可以訪問本類對象的成員變量
    super.成員變量     可以訪問父類對象的成員變量
    this.成員方法()     可以訪問本類對象的成員方法
    super.成員方法()    可以訪問父類對象的成員方法

方法重寫:

意義:從父類繼承一些方法的時候,該方法不能滿足子類的需求,需要重寫該方法

注意:

  • 如果父類方法是私有的,則不能夠進行重寫,即使出現了和父類一樣的方法也不是重寫,因爲子類看不到私有方法。
  • 重寫時子類方法的訪問權限大於或等於父類的訪問權限
  • 只要子類重寫了該方法(先判斷是不是重寫),則調用該方法時,一定執行子類的方法,因爲子類重寫覆蓋了父類的方法。
  • 子類與父類的方法聲明必須一模一樣:函數的返回值類型 函數名 參數列表都要一樣
    重寫與重載區別:
    重寫:
     父子類中方法一樣
    重載:
     同一類中方法名相同參數列表不同,與返回類型無關

    抽象類:abstract

     抽象類一定是個父類,因爲抽象類時不斷抽取共性需求而來的。
     特點:不能創建對象,只能是子類繼承後創建子類對象,除此和其他類並無區別
    抽象方法:
     被abstract修飾,只有方法聲明沒有方法主體的方法就是抽象方法
    特點:
     只有方法聲明沒有方法主體
     只能必須在抽象類中
     子類重寫類父類的抽象方法,實現了方法主體,這就是方法實現.

  • 一般都有抽象方法,抽象方法沒有方法體。
  • 有抽象方法的類一定是抽象類,抽象類不一定有抽象方法
  • 抽象方法是給子類準備的,如果子類繼承了抽象類則必須重寫該類的所有抽方法
發佈了27 篇原創文章 · 獲贊 2 · 訪問量 3740
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章