1.繼承中成員變量的特點
A:子類只能獲取父類非私有成員
子父類中成員變量的名字不一樣直接獲取父類的成員變量
子父類中成員變量名字是一樣的獲取的是子類的成員變量
B:就近原則:誰離我近我 就用誰
如果有局部變量就使用局部變量
如果沒有局部變量,有子類的成員變量就使用子類的成員變量
如果沒有局部變量和子類的成員變量,有父類的成員變量就使用父類的成員變量
C: super:可以獲取父類的成員變量和成員方法,this當前類的引用
2.方法重寫&方法重載
方法的重寫:在子父類當中,子類的方法和父類的完全一樣,子類重寫了父類的方法(覆蓋),當子類重寫了父類的方法之後,使用子類對象調用的就是子類的方法
方法的重載:在一個類中,有多個重名的方法,但是其參數不一樣(參數的個數,參數的類型,參數的順序),和返回值無關
3.繼承中構造方法的執行順序*
繼承中構造方法的執行順序
在子父類中,創建子類對象,調用子類的構造方法,
在子類的構造方法的第一行代碼如果沒有調用父類的構造或者沒有調用子類的其他構造,則默認調用父類無參構造
爲什麼要調用父類構造?
因爲需要給父類的成員變量初始化
肯定會先把父類的構造執行完畢,在去執行子類構造中的其他代碼
我是父類無參構造 --- 我是子類有參構造 --- 我是子類無參構造
4.this與super區別*
this:當前對象的引用
調用子類的成員變量
調用子類的成員方法
在子類的構造方法第一行調用子類其他構造方法
super:子類對象的父類引用
調用父類的成員變量
調用父類的成員方法
在子類的構造方法第一行調用父類的構造方法
5.匿名對象
匿名對象:沒有名字的對象
匿名對象的應用場景:
* 當方法只調用一次的時候可以使用匿名對象
* 可以當作參數進行傳遞,但是無法在傳參之前做其他的事情
* 注意:匿名對象可以調用成員變量並賦值,但是賦值並沒有意義
*/
public class AnonymousObejctDemo {
public static void main(String[] args) {
//Student s = new Student();
//s.study();
//s.study();
//new Student();//匿名對象,沒有變量引用的對象
//new Student().study();
//new Student().study();
6.final關鍵字
final: 修飾符,可以用於修飾類、成員方法和成員變量
final所修飾的類:不能被繼承,不能有子類
final所修飾的方法:不能被重寫
final所修飾的變量:是不可以修改的,是常量
常量:
字面值常量:1,2,3
自定義常量:被final所修飾的成員變量,一旦初始化則不可改變
注意:自定義常量必須初始化,可以選擇顯示初始化或者構造初始化
7.抽象類
abstract:關鍵字,用於修飾方法和類
抽象方法:不同類的方法是相似,但是具體內容又不太一樣,所以我們只能抽取他的聲明,沒有具體的方法體,沒有具體方法體的方法就是抽象方法
抽象類:有抽象方法的類必須是抽象類
* 注意:一個類繼承了抽象類需要重寫他所有的抽象方法,否則這個類就得是抽象類
特點:
抽象方法只能在抽象類裏面
抽象類和抽象方法必須被abstract修飾
抽象類不能創建對象(不能實例化)
抽象類中可以有非抽象的方法
抽象類和類的關係也是繼承
一個類繼承了抽象類要麼重寫所有的抽象方法,要麼他自己是抽象類