Java中this與super
阿新 • • 發佈:2021-07-28
一、this
- this可以用來修飾屬性、方法、構造器
- this修飾屬性和方法時:
this理解為當前物件或當前正在建立的物件
2.1 在類的方法中,可以使用“this.屬性”或“this.方法”,呼叫當前物件的屬性或方法,通常我們可以省略this,但如果方法的形參與類的屬性重名時,我們必須顯式地使用this來表明次變數時屬性,而非形參
2.2 在類的構造器中,可以使用“this.屬性”或“this.方法”,呼叫當前正在建立的物件的屬性或方法,通常我們可以省略this,但如果構造器的形參與類的屬性重名時,我們必須顯式地使用this來表明次變數時屬性,而非形參 - this呼叫構造器
3.1 在類的構造器中,可以顯式的使用“this(引數表)”的方式呼叫本類中其他的構造器
3.2 構造器中不能通過“this(引數表)”的方式呼叫自己
3.3 如果一個類這種有n個構造器,那麼最多隻能有n-1
3.4 “this(引數表)”必須宣告在當前構造器的首行
3.5 構造器內部,最多隻能宣告一個“this(引數表)”,來呼叫其他構造器
二、super
- super可以理解為父類
- super可以呼叫:屬性、方法、構造器
- super呼叫屬性,方法
3.1 在子類的方法或構造器中,使用“super.屬性”或“super.方法”的方式呼叫父類中宣告的屬性或方法,通常情況下可以省略super
3.2 當子類和父類中定義了同名的屬性時,如果想在子類中呼叫父類的屬性,那麼必須顯式的使用“super.屬性”的方式,這表明呼叫的是父類的屬性
3.3 當子類重寫了父類的方法 - super呼叫構造器
4.1 我們可以使用“super(引數表)”的方法呼叫父類中的宣告的構造器
4.2 “super(引數表)”使用時必須宣告在子類構造器的首行
4.3 在類的構造器中“super(引數表)”和“this(引數表)”只能二選一,不能同時出現(因為它們都要求要放在構造器的首行)
4.4 在構造器首行沒有顯式宣告“super(引數表)”或“this(引數表)”,則預設呼叫的是父類的空參構造器,即“super()”
4.5 子類的多個構造器中,至少有一個構造器呼叫“super(引數表)”的形式呼叫父類中的構造器