首先還是來看一下例子:
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.成員變數名 的方式來引用成員變數。當然,在沒有同名的情況下,可...