Java中this的問題

2021-08-03 11:26:23 字數 1450 閱讀 1174

首先this是指當前執行類例項物件。當你建立乙個物件並呼叫該物件的方法的時候其實下面這樣的:

person p = new person();

p.show(string name);

其實在編譯之後程式設計機器語言是p.show(p , name);第乙個引數是本類的物件的引用。而在這個show方法中怎麼來用這個引用呢?其實就是用this來代替這個引用。也就是當前執行類例項物件。

而靜態方法就是沒有this的方法,也就是靜態的方法中不能使用this,因為靜態方法編譯成機器語言之後,並沒有在引數中加入本類物件的引用,也就是 p.show(string name)和原來一樣。這就是this的由來。

下面說一下this的一些使用

public

class

father

public

void

show()

}public

class

sonextends

father

public

void

show()

public

static

void

main(string args)

}

this is son's fun()

this is father's fun

son's show()

有些人對this理解不深的可能會產生疑問,為什麼結果會是這樣。我在前面已經說過:」this是指當前執行類例項物件」,所以,要看是誰呼叫了這個方法。這裡寫描述

在父類中又通過this呼叫了show()方法,因為show方法是子類繼承自父類的。而且,此時的this是指當前的呼叫者,圖中已經說過,當前的呼叫者是son,所以此時的this也是son所以呼叫的show方法也就是子類的show方法了。

public

class

father

}public

class

sonextends

father

public

static

void

main(string args)

}

this is son's fun() :son

this is father's fun :father

public

static

void

main(string args)

這裡的執行結果就是:

son

father

這就牽扯到了多型。多型的特點是,成員變數編譯時看左邊,成員方法編譯看左邊,執行看右邊

大家要記住方法是誰執行看誰,欄位是誰的就是誰的。

JAVA中的覆蓋問題

1 子類方法的名稱 引數簽名和返回型別必須與父類方法的名稱 引數簽名和返回型別一致,修飾符可以相同也可以不同,但子類的訪問許可權不能低於父類的訪問許可權。2 父類的靜態方法不能被子類覆蓋為非靜態方法。3 子類可以定義與父類的靜態方法同名的靜態方法,以便在子類中隱藏父類的靜態方法。靜態方法只能隱藏,不...

Java中的死鎖問題

死鎖是指兩個或兩個以上的程序在執行過程中,由於競爭資源或者由於彼此通訊而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。簡而言之,乙個執行緒鎖住了資源a 還要使用資源b,另外乙個執行緒 鎖住了資源b 還想著得到資源a,當兩者互不相讓,就形成了死鎖。死鎖形成的條件 1 互斥條件 指程序對所分...

Java中的許可權問題

1 成員方法中許可權修飾符的訪問 同乙個包下 同一類 子類和無關類 不同包下 子類 不同包下 無關類 a private y b 預設 y y c protected y y y d public y y y y 2 類 a 許可權修飾符 public 預設 b 狀態修飾符 final c 抽象修飾...