java第八天---程式碼塊、繼承、方法重寫、final關鍵字
1 三種常見程式碼塊
a:區域性程式碼塊
在方法中出現;限定變數生命週期,及早釋放,提高記憶體利用率
b:構造程式碼塊
在類中方法外出現;多個構造方法方法中相同的程式碼存放到一起,每次呼叫構造都執行,並且在構造方法前執行
在類中方法外出現,加了static修飾
在類中方法外出現,並加上static修飾;用於給類進行初始化,在載入的時候就執行,並且只執行一次。
2 繼承
1 繼承概述
多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麼多個類無需再定義這些屬性和行為,只要繼承那個類即可。
2 繼承特點
a:Java只支援單繼承,不支援多繼承。
b:Java支援多層繼承(繼承體系)
3 繼承注意事項
a:子類只能繼承父類所有非私有的成員(成員方法和成員變數)
b:子類不能繼承父類的構造方法,但是可以通過super(待會兒講)關鍵字去訪問父類構造方法。
3 建立子類物件時,為什麼先執行父類的構造呢?
4 子類和父類的成員變數名稱相同時以及方法名相同時
在子類中訪問一個變數的查詢順序("就近原則")
a: 在子類的方法的區域性範圍找,有就使用
b: 在子類的成員範圍找,有就使用
c: 在父類的成員範圍找,有就使用
d:如果還找不到,就報錯
通過子類呼叫方法:
a: 先查詢子類中有沒有該方法,如果有就使用
b:在看父類中有沒有該方法,有就使用
c: 如果沒有就報錯
5 this和super的區別
this 代表的是本類物件的引用
super 代表的是父類儲存空間的標識(可以理解成父類的引用,可以操作父類的成員)
this和super的使用
a:呼叫成員變數
this.成員變數 呼叫本類的成員變數
super.成員變數 呼叫父類的成員變數
b:呼叫構造方法
this(...) 呼叫本類的構造方法
super(...) 呼叫父類的構造方法
c:呼叫成員方法
this.成員方法 呼叫本類的成員方法
super.成員方法 呼叫父類的成員方法
6 子類構造方法與父類構造方法(繼承中構造方法)
子類中所有的構造方法預設都會訪問父類中空引數的構造方法
每一個構造方法的第一條語句預設都是:super()
在這裡簡單的提一句,Object類。否則有人就會針對父類的構造方法有疑問
7 構造方法注意事項
父類沒有無參構造方法,子類怎麼辦?
a: 在父類中新增一個無參的構造方法
b:子類通過super去顯示呼叫父類其他的帶參的構造方法
c:子類通過this去呼叫本類的其他構造方法
本類其他構造也必須首先訪問了父類構造
注意事項:
super(…)或者this(….)必須出現在第一條語句上
8 方法重寫
1 什麼叫方法重寫
子類中出現了和父類中一模一樣的方法宣告(方法名,引數列表,返回值型別),
2 為什麼要方法重寫
當子類需要父類的功能,而功能主體子類有自己特有內容時,可以重寫父類中的方法,這樣,即沿襲了父類的功能,又定義了子類特有的內容。
9 方法重寫的注意事項
a:父類中私有方法不能被重寫
因為父類私有方法子類根本就無法繼承
b:子類重寫父類方法時,訪問許可權不能更低
最好就一致
c:父類靜態方法,子類也必須通過靜態方法進行重寫
其實這個算不上方法重寫,但是現象確實如此
10 final關鍵字
1 為什麼會有final
由於繼承中有一個方法重寫的現象,而有時候我們不想讓子類去重寫父類的方法
2 final修飾特點
修飾類: 被修飾類不能被繼承
修飾方法: 被修飾的方法不能被重寫
修飾變數: 被修飾的變數不能被重新賦值,因為這個量其實是一個常量
3 注意事項
11 第八天課後作業
1
2