Java中 this 和 super 關鍵字理解

2021-08-01 07:41:28 字數 1789 閱讀 5277

首先還是來看一下例子:

package thi***ample;

public

class student

public

student (long id)

public

student (long id, string name)

public

void

print ()

}

package thi***ample;

public

class

middlestudent

extends

student

public

middlestudent (long id, string name)

public

middlestudent (long id, string name, string book)

public

void

print ()

public

void

show ()

}

package thi***ample;

public

class studenttest

}// 輸出結果:override the super class method!

// a method of super class

// a method of sub class

1.首先看一下超類student類中用到的this,有兩種用法,一種是this()或者this(para...);另外一種是this.para

第一種情況只能用在構造器中,也就是乙個構造器可以呼叫另一種構造器,但是構造器不能呼叫自己本身,也就是不能在構造器中形成遞迴;

第二種情況是呼叫當前類的成員變數和方法。在類中構造器或非構造器方法中都可以使用。其實個人覺得第二中情況一般都是使用this呼叫當前類的變數,來區分與變數同名的方法引數,當呼叫方法的時候,this可以直接省略掉。。。

2.接著看一下student的子類middlestudent,是怎樣呼叫this和super的。

this(para...)的用法還是不變的,這裡主要比較一下this(para...)super(para...)

看上面兩個圖就很明顯,super(para...)呼叫的是父類的構造器,而this(para...)呼叫的是當前物件的構造器。

我們都知道不管是super(para...)還是this(para...)都只能放在構造器的第一行,所以他倆不能混用,反正就是乙個構造器只能呼叫他倆之中的乙個。

super可以呼叫父類所有非私有的成員變數和方法,這時就不能像this呼叫方法那麼任性可以取消的,如果想呼叫父類的方法,必須加上super。

寫到這裡大家應該都清楚這兩個用法和區別了,以後遇到其他的再補充。

java中this和super的區別

一 this 1 屬性訪問 訪問本類中的屬性,如果本類中沒有此屬性,則從父類中繼續查詢 2 方法 訪問本類中的方法,如果本類中沒有此方法,則從父類中繼續查詢 3 呼叫構造 呼叫本類構造,必須放在構造方法的首行 4 表示當前物件 二 super 1 屬性訪問 訪問父類中的屬性 2 方法 直接訪問父類中...

Java中this和super的區別

this通常指當前物件,super則指父類的。當你想要引用當前物件的某種東西,比如當前物件的某個方法,或當前物件的某個成員,你便可以利用this來實現這個目的,當然,this的另乙個用途是呼叫當前物件的另乙個建構函式。如果你想引用父類的某種東西,則非super莫屬。在一般方法中最普遍的情況就是,在你...

java中super和this用法總結

一 this 第一 通過this呼叫另乙個構造方法,用法是this 引數列表 這個僅僅在類的構造方法中,別的地方不能這麼用。第二 函式引數或者函式中的區域性變數和成員變數同名的情況下,成員變數被遮蔽,此時要訪問成員變數則需要用 this.成員變數名 的方式來引用成員變數。當然,在沒有同名的情況下,可...