Java 繼承學習總結
阿新 • • 發佈:2020-10-09
繼承
概述
繼承是描述java中類與類之間的關係的
繼承什麼時候用
當描述的多個事物之間存在包含(is a)關係的時候,如果物件之間存在“B”是“A”,可以使用繼承,“B”繼承“A”.如: 貓 extends 哺乳動物
繼承語法格式
使用extends關鍵字表示,前面是子類,後面是父類
public class Son extends Father{
// ...
}
繼承特點
- java中的類與類之間只能單繼承,不能多繼承,可以多層繼承
- 子類擁有父類非private的屬性和方法,子類可以直接使用父類(父類的父類)的內容
- 子類可以擴充套件父類沒有的屬性和方法
- 子類可以以自己的方式實現父類方法(方法重寫)
- 父類的構造方法 靜態方法不能被繼承(可以用super()呼叫構造方法)
- java中所有的類直接或間接繼承Object類
繼承的好處與弊端
繼承使得所有子類的公共部分都放在了父類,使得程式碼得到了共享,避免了重複,提升程式碼的複用性和維護性,同時也為多型提供了前提.
但是繼承中,父類變化,子類不得不變.繼承會破壞包裝,父類的實現細節暴露給了子類,降低了獨立性,提升了耦合性.繼承是一種類與類之間強耦合的關係.
繼承中成員變數的訪問
就近原則
當我們在子類的方法中直接寫一個變數名時,如果方法內有區域性變數,優先使用區域性變數,如果區域性變數沒有,會使用成員變數,如果成員變數沒有,會使用父類非私有的成員變數;
- 如果想直接訪問區域性變數,直接寫變數名
- 如果想直接訪問本類的成員變數,需要寫this.成員變數名
- 如果想直接訪問父類的成員變數,如果父類沒有私有,可以使用super.成員變數名,如果私有了,可以利用父類的get方法獲取成員變數的值
繼承中成員方法的訪問
優先找子類,子類沒有再找父類;