1. 程式人生 > 實用技巧 >Java 繼承學習總結

Java 繼承學習總結

繼承

概述

繼承是描述java中類與類之間的關係的

繼承什麼時候用

當描述的多個事物之間存在包含(is a)關係的時候,如果物件之間存在“B”是“A”,可以使用繼承,“B”繼承“A”.如: 貓 extends 哺乳動物

繼承語法格式

使用extends關鍵字表示,前面是子類,後面是父類

public class Son extends Father{
    // ...
}

繼承特點

  1. java中的類與類之間只能單繼承,不能多繼承,可以多層繼承
  2. 子類擁有父類非private的屬性和方法,子類可以直接使用父類(父類的父類)的內容
  3. 子類可以擴充套件父類沒有的屬性和方法
  4. 子類可以以自己的方式實現父類方法(方法重寫)
  5. 父類的構造方法 靜態方法不能被繼承(可以用super()呼叫構造方法)
  6. java中所有的類直接或間接繼承Object類

繼承的好處與弊端

繼承使得所有子類的公共部分都放在了父類,使得程式碼得到了共享,避免了重複,提升程式碼的複用性和維護性,同時也為多型提供了前提.

但是繼承中,父類變化,子類不得不變.繼承會破壞包裝,父類的實現細節暴露給了子類,降低了獨立性,提升了耦合性.繼承是一種類與類之間強耦合的關係.

繼承中成員變數的訪問

就近原則

當我們在子類的方法中直接寫一個變數名時,如果方法內有區域性變數,優先使用區域性變數,如果區域性變數沒有,會使用成員變數,如果成員變數沒有,會使用父類非私有的成員變數;

  1. 如果想直接訪問區域性變數,直接寫變數名
  2. 如果想直接訪問本類的成員變數,需要寫this.成員變數名
  3. 如果想直接訪問父類的成員變數,如果父類沒有私有,可以使用super.成員變數名,如果私有了,可以利用父類的get方法獲取成員變數的值

繼承中成員方法的訪問

優先找子類,子類沒有再找父類;