子類繼承父類
- 子類可以訪問父類的非私有成員變量,非私有成員方法,構造方法不能繼承。
- 子類擁有父類的所有的屬性和方法:私有的通過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修飾,只有方法聲明沒有方法主體的方法就是抽象方法
特點:
只有方法聲明沒有方法主體
只能必須在抽象類中
子類重寫類父類的抽象方法,實現了方法主體,這就是方法實現.- 一般都有抽象方法,抽象方法沒有方法體。
- 有抽象方法的類一定是抽象類,抽象類不一定有抽象方法
- 抽象方法是給子類準備的,如果子類繼承了抽象類則必須重寫該類的所有抽方法