java複習第1天---1.2---繼承
目錄
內容
1、繼承格式
修飾符 子類名 extends 父類名{}
例如:
class A{}
class B extends A{}
extends爲繼承關鍵字
2、成員變量的訪問特點
在繼承關係中,成員變量訪問規則如下:
-
父類方法只能訪問父類成員變量
-
子類方法優先訪問子類的成員變量,如果沒有在訪問父類成員變量
-
本地變量優先級最高
-
示例代碼2-1:
package inherited.var; public class Father { int num = 20; public void show() { System.out.println(num); } } package inherited.var; public class Son extends Father{ int num = 10; public void show() { int num = 30; System.out.println(num); System.out.println(this.num); System.out.println(super.num); } } package inherited.var; public class TestVar1 { public static void main(String[] args) { Son s1 = new Son(); s1.show(); } } 結果: 30 10 20
3、成員方法訪問特點
訪問規則同成員變量。
4、方法重寫
4.1、方法重寫與方法重載區別
-
方法重寫:override
- 方法名和參數列表一致
- 返回值範圍小於等於父類方法返回值範圍
- 子類方法訪問權限要大於等於父類方法的訪問權限
- 權限範圍:public > protected(default) > private
-
方法重載:overload
- 方法名相同
- 參數不同
- 參數數量不同
- 參數類型不同
4.2、方法重寫作用
軟件開發思想之一:開閉原則-對修改關閉,對擴展開放。即已經封裝好的功能,儘量不在修改。如果想要對原有功能擴展,可以使用方法重寫擴展原有功能。
-
示例4.2-1:10年前手機功能:打電話、發短信、顯示號碼,現在手機不僅能顯示號碼,還可以顯示姓名,顯示頭像。
-
代碼4.2-1:
package inherited.override; public class Phone { public void call() { System.out.println("打電話"); } public void info() { System.out.println("發短信"); } public void show() { System.out.println("顯示號碼"); } } package inherited.override; public class NewPhone extends Phone{ public void show() { super.show(); System.out.println("顯示姓名"); System.out.println("顯示頭像"); } } package inherited.override; public class OverrideTest1 { public static void main(String[] args) { NewPhone np = new NewPhone(); np.call(); np.info(); np.show(); } }
5、構造方法
-
規則:
- 調用子類構造方法,會默認調用父類無參構造方法
- 如果要顯示調用,則用super(),且必須寫在子類構造方法第一行。
- 顯示調用父類構造方法,不能多次調用,最多一次
-
示例代碼5-1:
package inherited.constructor; public class Father { public Father() { System.out.println("父類無參構造方法"); } public Father(int a) { System.out.println("父類帶參構造方法"); } } package inherited.constructor; public class Son extends Father{ public Son() { System.out.println("子類無參構造方法"); } public Son(int a) { System.out.println("子類帶參構造方法"); } public Son(double a) { super(2); System.out.println("子類帶參構造方法"); } } package inherited.constructor; public class TestConstructor1 { public static void main(String[] args) { //Son s1 = new Son(); //Son s2 = new Son(2); Son s3 = new Son(2.0); } } 結果: s1 父類無參構造方法 子類無參構造方法 s2 父類無參構造方法 子類帶參構造方法 s3 父類帶參構造方法 子類帶參構造方法
6、this與super
- this:指向調用對象
- this.成員變量
- this.成員方法
- super:指向父類
- super.成員變量
- super.成員方法
- super() 父類構造方法
後記 :
本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785
前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA