this關鍵字總是指向呼叫該方法的物件。
根據this出現位置不同,this作為物件的預設引用有兩種情形:
1、構造器中引用該構造器正在初始化的物件;
2、在方法中引用呼叫該方法的物件。
this呼叫另乙個過載的構造器的初始化**。只能在構造器中使用,而且必須作為構造器執行體的第一條語句。會根據this括號裡的實參來呼叫形參列表與之對應的構造器。
this可以代表任何物件,當this出現在某個方法體中時,它所代表的物件是不確定的,但它的型別是確定的:它所代表的只能是當前類的例項;只有當這個方法被呼叫時,它所代表的物件才被確定下來,誰呼叫這個方法,this就代表誰。
大部分時候,乙個方法訪問該類中定義的其他方法、成員變數時加不加this字首的效果完全一樣。
對於static修飾的方法而言,則可以使用類來直接呼叫該方法,如果在static修飾的方法中使用this關鍵字,則這個關鍵字就無法指向合適的物件。所以static修飾的方法中不能使用this引用。由於static修飾的方法中不能使用this引用,所以static修飾的方法不能訪問不使用static修飾的普通成員。靜態成員不能直接訪問非靜態成員。
方法裡有個區域性變數和成員變數同名,但程式又需要在該方法裡訪問這個被覆蓋的成員變數,則必須使用this字首。
在某個方法中把this作為返回值,則可以多次連續呼叫同乙個方法,使得**更加簡潔,但可能造成實際意義的模糊。
super用於限定該物件呼叫它從父類繼承得到的例項變數或方法。super也不能出現在static修飾的方法中,static修飾的方法是屬於類的,該方法的呼叫者可能是乙個類,而不是物件,因而super限定也失去了意義。
如果在構造器中使用super,則super用於限定該構造器初始化的是該物件從父類繼承得到的例項變數,而不是該類自己定義的例項變數。
如果子類定義了和父類同名的例項變數,則會發生子類例項變數隱藏父類例項變數的情形。在子類定義的例項方法中可以通過super來訪問父類中隱藏的例項變數。
子類不會獲得父類的構造器,但子類構造器可以呼叫父類構造器的初始化**,在子類構造器中國呼叫父類構造器用super來完成。
super和this呼叫的區別,super呼叫的是其父類的構造器,而this呼叫的是同乙個類中過載的構造器。因此,使用super呼叫父類構造器也必須出現在子類構造器執行體的第一行,所以this呼叫和super呼叫不會同時出現。
不管是否使用super呼叫來執行父類構造器的初始化**,子類構造器總會呼叫父類構造器一次,呼叫父類無參的構造器。
this關鍵字和super關鍵字
this關鍵字和super關鍵字都必須放在構造方法的第一行,所有兩個關鍵字不能同時存在,任選其一即可,只需保證子類的所有構造方法呼叫父類的構造方法即可 this關鍵字的應用 this關鍵字用於區分區域性變數和成員變數的同名問題 有this關鍵字的是成員變數,或者是誰呼叫我,訪問的就是誰 this關鍵...
this 和 super關鍵字
this和super關鍵字,其用法非常的相似。super用來代表父類,而this用來代表本類。this 用於呼叫本類的構造。super 用來呼叫父類的構造,必須出現在構造當中的第一行。this.用來呼叫本類的屬性和方法,可以出現在在非static的部分。super.用來呼叫父類已經父類繼承而來的的屬...
this關鍵字和super關鍵字分別代表什麼
this關鍵字和super關鍵字分別代表什麼?以及他們各自的使用場景和作用。1.成員變數和區域性變數重名時,可以用this來區分。2.this可以用在建構函式中,呼叫其它建構函式 只能定義在建構函式的第一行,因為初始化時必須被先執行 super可以直接呼叫父類的屬性 方法 構造方法。但在呼叫構造方法...