Java中 this 和super 的對比學習

this

this指的是當前對象的引用。
this的兩種用法:
【1】調用本類中的實例屬性、實例方法。格式:this. 屬性名、this.方法名

class Person{
    private String name;
    private int age;
 
    public Person(String name,int age){
       this.name = name ;//局部變量和實例變量重名時,使用this加以區分
        this.age = age ;
    }

【2】調用本類中的其它構造方法. 格式:this(),this(參數)

public class Person{
	public Person(){}
    public Person(String name){
        this();//調用本類無參構造
        this.name = name ;
    }
    public Person(String name,int age){
        this(name);//調用本類有參構造
        this.age = age ;
    }
}

【3】默認來講,實例屬性和方法前的this.隱式存在

super

super指的是當前對象父類的引用。
super的兩種用法:
【1】在子類中,可以通過" super. "的形式訪問父類的屬性和方法,可解決一定的屬性遮蔽、方法覆蓋後的父類成員調用問題。
【2】子類中調用父類中的構造方法。super()、super(參數)
【3】如果子類構造方法中,沒有顯示定義super()或super(實參),則默認提供super()。

注意

【a】
super(參數):調用父類中的某一個構造函數(應該爲構造函數中的第一條語句)。
this(參數):調用本類中另一種形式的構造函數(應該爲構造函數中的第一條語句)。
【b】
this和super不能同時出現在一個構造函數裏面,因爲this必然會調用其它的構造函數,其它的構造函數必然也會有super語句的存在,所以在同一個構造函數裏面有相同的語句,就失去了語句的意義,編譯器也不會通過。
【c】
this()和super()都指的是對象,所以,均不可以在static環境中使用。包括:static變量,static方法,static代碼塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章