面向對象的三大特征:封裝性、繼承性、多態性。
繼承
繼承是多態的前提 ,如果沒有繼承,就沒有多態。
繼承主要解決的問題就是:共性抽取。
繼承關系當中的特點:
- 子類可以擁有父類的“內容”
- 子類還可以擁有自己的專有的內容。
繼承的格式:
在繼承的關系中,”子類就是一個父類“。也就是說,子類可以被當做父類看待。
例父類是員工,子類是講師,那么“講師就是一個員工”。關系:is-a。
定義父類的格式:(一個普通的類的定義) public class 父類名稱{ //... } 定義子類的格式: public class 子類名稱 extends 父類名稱{ //... }
區分子類重名的三種方法:
- 局部變量: 直接寫成員變量
- 本類的成員變量: this.成員變量
- 父類的成員變量: super.成員變量
注意事項:
無論是成員變量還是成員方法,如果沒有都是向上找父類,絕不會向下找子類的。
- 重寫(Override):方法名稱一樣,參數列表【也一樣】。覆蓋、覆寫。
- 重載(Overload):方法名稱一樣:參數列表【不一樣】。
方法覆蓋重寫的特點:創建的是子類對象,則優先用子類方法。
方法覆蓋重寫的注意事項:
1.必須保證父子類之間方法的名稱相同,參數列表也相同。
- @Override:寫在方法前面,用來檢測是不是有效的正確覆蓋重寫。
- 這個注解就算不寫,只要滿足要求,也是正確的方法覆蓋重寫。
2.子類方法的返回值必須【小於等於】父類方法的返回值范圍。
- 小擴展提示:java.Lang.Object類是所有類的公共最高父類(祖宗類),java.lang.String就是Object子類。
3.子類方法的權限必須【大於等於】父類方法的權限修飾符。
- 小擴展提示:public > protected > (default) > private
- 備注:(default)不是關鍵字default,而是什么都不寫,留空。
super和this關鍵字的用法
擴展:
子類必須調用父類的構造方法,不寫則贈送super();寫了則用寫的指定的super調用,super只能有一個,還必須是第一個。
super關鍵字用來訪問父類的類容,而this關鍵字用來訪問父類內容。用法也有三個:
- 在本類的成員方法中,訪問本來的成員變量。
- 在本類的成員方法中,訪問本類的另一個成員方法。
- 在本類的構造方法中,訪問本類的另一個構造方法。
在第三種用法要注意:
- A:this(...)調用也必須是構造方法的第一個語句,唯一一個。
- B:super和this兩構造調用,不能同時使用。