JAVA繼承
繼承的好處:
減少代碼的冗餘性(重要性)
編寫繼承代碼:
1、編寫父類:
-
[修飾符] class 類名 extends Object{
屬性; 方法;
}
- Object爲超類
-
[修飾符] class 類名{
屬性; 方法;
}
2、編寫子類:
-
[修飾符] class 類名 extends 父類名{
編寫獨有屬性和方法;
}
注意:
- 1、當一個沒有指明繼承哪個父類時,則默認繼承Object類(超類)
- 2、Object類是所有類的父類(超類)
- 3、在子類中可以直接訪問父類中的屬性(前提是父類屬性沒有使用private修飾)
繼承中的注意事項:
子類繼承父類,但不能繼承父類的構造方法
父類也叫做超類(基類),子類也叫做派生類
繼承滿足的條件:
- 貓是動物
繼承兩大特性:
-
一個類只能繼承一個直接的父類,也就是類是單繼承性
- (一個兒子只有一個親爹)
-
類具有傳遞性
常見錯誤:
手寫構造方法時,建議先編寫無參構造,再編寫需要的
當實例化子類時父類做了什麼?
先執行父類的構造方法,在執行子類相匹配(有無參)的構造方法
如果子類構造方法中沒有指明則默認調用父類無參構造方法
如果子類構造方法中指明父類哪個構造方法,則先執行父類相匹配的構造方法,然後再執行子類相匹配的構造方法
this與super關鍵字訪問實例變量區別:
this關鍵字:
- 代表當前這個對象
- this可以訪問本類中的實例變量、實例方法,也可以訪問本類中的其他構造方法
- this還可以訪問本類中的實例變量、實例方法
- 如果訪問實例變量時,默認前面加this,但是當使用this,訪問實例變量時,先在當前類中找該屬性,如沒有找到則去父類中找
super關鍵字:
-
表示超類或父類
-
super只能在子類中作用,可以訪問父類中的實例變量、實例方法,還可以訪問父類的構造方法
-
(super直接去父類中找)
-
super(*)等價於super()
- (不寫默認)
重寫:
Overwrite也叫做覆蓋
子類方法名稱必須與父類方法名稱一致
參數列表一致
返回類型一致或父類方法返回類型的子類類型
修飾符一致(不能縮小範圍)
子類不能重寫:
- 構造方法不能被重寫
- 屬性不能重寫
- 靜態方法不能重寫
- 私有方法不能重寫