亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java this 關鍵字的使用方法詳解

2024-07-13 10:12:54
字體:
來源:轉載
供稿:網友

java/272795.html">java/83717.html">Java this 關鍵字的使用方法詳解

構造方法中的this關鍵字

構造方法是一個類的對象在通過new關鍵字創建時自動調用的,在程序中不能向調用其他方法一樣通過方法名(也就是類名)來調用。但如果一個類有多個構造方法,可以在一個構造方法中通過this(paras…)來調用其他的構造方法。
使用this來調用其他構造方法有如下幾個約束。

1) 只能在構造方法中通過this來調用其他構造方法,普通方法中不能使用。
2) 不能通過this遞歸調用構造方法,即不能在一個構造方法中通過this直接或間接調用該構造方法本身。

例如:

class test {  test() {    this(1);  }  test(int a){    this();  }  test(int a, int b) {    this(1, 2);  }}

test()方法中調用了test(int)構造方法,而test(int)構造方法又調用了test()構造方法,構成遞歸調用。test(int, int)中調用了自身,也構成了遞歸調用。都是不允許的。

3) 通過this調用其他構造方法必須放在構造方法的第一行中執行。由于super調用父類的構造函數也必須放在構造方法的第一行中執行,因此,通過this和super調用構造方法不能同時出現一個構造方法中。也不能在一個構造方法中多次調用不同的構造方法。
在構造方法中也可以使用this關鍵字來訪問本類中的成員變量和成員函數。其用法和非構造方法中的this關鍵字相同。

非構造方法中的this關鍵字

在Java中可以通過通過this關鍵字來調用類中的成員變量和方法。其用法是。

1) this.xxx; 訪問類中的成員變量xxx
2) this.yyy(paras…); 訪問類中的成員方法yyy
3) this; 當前類對象的引用

this關鍵字訪問類的成員變量和成員函數時不受訪問權限的控制,可以訪問本類中所有的成員變量和方法,包括private的成員變量和方法。也可以通過this訪問本類的static成員,不過由于static成員可以通過類名直接訪問,如果通過this來訪問會有“The static field ××× should be accessed in a static way”的警告信息。不能在類的static成員或static塊中使用this。

繼承關系下的this關鍵字

在繼承關系下,父類中的this關鍵字并不總是表示父類中的變量和方法。this關鍵字的四種用法如前文所述,列舉如下。

1) this(paras…); 訪問其他的構造方法
2) this.xxx; 訪問類中的成員變量xxx
3) this.yyy(paras…); 訪問類中的成員方法yyy
4) this; 當前類對象的引用

對第一種,無論子類是否有相同參數的構造方法,this(paras…);訪問的始終是父類中的構造方法。
對第二種,無論子類是否有覆蓋了該成員變量,this.xxx;訪問的始終是父類中的成員變量。
對第三種,如果子類重寫了該成員方法,則this.yyy(paras…);訪問的是子類的成員方法,如果子類沒有重寫該成員方法,則this.yyy(paras…);訪問的是父類的成員方法。
對第四種,this始終代表的是子類的對象。

例如:

public class ClassTest {  public static void main(String[] args) {    Child child = new Child();    child.show();  }}class Parent {  public String str;  Parent(){    this(1);  }  Parent(int a) {    this.str = "Parent";    this.show();  }  public void show() {    System.out.println(this.str);  }}class Child extends Parent {  public String str;  Child() {  }  Child(int a) {    str = "Child";  }  public void show() {    System.out.println(str);    super.show();  }}

main()函數中有兩條語句,new Child()和child.show()。

第一條語句new Child()時要執行Child類的構造方法,但是Child類是Parent類的子類,因此會先執行Parent類的構造方法。Child類的無參構造函數中沒有使用super和this來調用父類或本類中的其他的構造方法,因此會調用父類的無參構造函數。在父類的無參構造函數Parent()中調用了執行了this(1),此調用表示執行父類中有一個整數參數的構造方法,雖然子類中也有一個有一個整數參數的構造方法,但是并不會被執行。父類中有一個整數參數的構造方法執行this.str=”Parent”,這里的this.str代表的是父類中的成員變量str,雖然子類中也有一個成員變量str,但是并不會被賦值。將父類中的成員變量str賦值為”Parent”后,接著執行了this.show(),雖然父類中有一個show()方法,但由于子類重寫了show()方法,所以this.show()執行的子類的show()方法。子類的show()方法首先執行了打印str的操作,此時打印的顯然是子類中的str,子類的str沒有被賦值,因為打印null。接著子類的show()方法執行了super.show(),即調用了父類的show()方法,在父類的show()方法中執行了打印this.str的操作,this.str同樣代表父類中的成員變量str,因此打印”Parent”。

第二條語句child.show()先是執行子類的show()方法,子類的show()先是打印了子類的str值(null),然后執行了父類的show()打印了父類的str值(”Parent”)。

兩條語句的打印結果為null, Parent, null, Parent。

如果將第一條語句改為new Child(1),則執行的是子類的有一個整數參數的構造方法,仍然是先執行父類的無參構造方法,初始化父類的str為”Parent”,然后執行子類的show(),子類的show()打印子類的str值(null),然后執行父類的show(),父類show()打印父類的str值(”Parent”),然后執行子類的構造方法將子類的str初始化為”Child”。 第二條語句child.show()先是執行子類的show()方法,子類的show()先是打印了子類的str值(”Child”),然后執行了父類的show()打印了父類的str值(”Parent”)。

兩條語句的打印結果為null, Parent, Child, Parent。

super和this的異同

super在一個類中用來引用其父類的成員,它是在子類中訪問父類成員的一個橋梁,并不是任何一個對象的引用,而this則表示當前類對象的引用。在代碼中Object o = super;是錯誤的,Object o = this;則是允許的。
super關鍵字的作用在于當子類中覆蓋了父類的某個成員變量,或者重寫了父類的某個成員方法時還能夠訪問到父類的成員變量和成員方法。如果子類中沒有重寫父類的成員變量和成員方法,則子類會繼承父類的所有非private的成員變量和成員方法。這時在子類中無論通過this來訪問成員和通過super來訪問成員,結果都是一樣的。

super.getClass()和this.getClass()

getClass()是Object類定義的一個final方法,所有Java類的getClass()都繼承自Object類。如前文所述,如果子類沒有重寫父類的某個成員方法,那么通過super來訪問還是還是通過this來訪問結果都是一樣的。因此,super.getClass()和this.getClass()結果是一樣的。Object類的getClass()方法返回的是該對象的運行時類,一個對象的運行時類是該對象通過new創建時指定的類。因此,super.getClass()和this.getClass()返回的都是new對象時指定的類。

例如:

public class ClassConstructorTest {  public static void main(String[] args) {    Child child = new Child();    child.show();  }}class Parent {  private Parent mSelf;  Parent(){    mSelf = this;  }  public void show() {    System.out.println(this.getClass().getName());    System.out.println(super.getClass().getName());    System.out.println(mSelf.getClass().getName());  }}class Child extends Parent {  public void show() {    System.out.println(this.getClass().getName());    System.out.println(super.getClass().getName());    super.show();  }}

打印的類名都是Child。

如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频在线播放| 18一19gay欧美视频网站| 欧美性videos高清精品| 欧美精品日韩三级| 欧美高清视频在线播放| 国产精品高潮呻吟久久av野狼| 亚洲肉体裸体xxxx137| 亚洲第一网站免费视频| 国产成人精品亚洲精品| 97国产精品免费视频| 亚洲女同性videos| 中文字幕国产亚洲| 日韩成人在线免费观看| 在线播放精品一区二区三区| 国产美女精彩久久| 日本精品视频在线| 国产日韩欧美在线看| 欧美激情在线狂野欧美精品| 中日韩午夜理伦电影免费| 91精品国产免费久久久久久| 日韩在线观看电影| 91在线视频成人| 成人激情黄色网| 欧美激情国产高清| 日韩av色在线| 91免费精品国偷自产在线| 欧洲美女免费图片一区| 欧美野外猛男的大粗鳮| 影音先锋日韩有码| 欧美日韩精品中文字幕| 欧美一级片一区| 一个人www欧美| 日韩av在线网站| 日韩av在线网页| 亚洲精品国产精品久久清纯直播| 91精品国产一区| 日韩av在线一区二区| 精品久久久久人成| 亚洲高清不卡av| 美女啪啪无遮挡免费久久网站| 超碰91人人草人人干| 成人精品一区二区三区| 欧美精品免费播放| 亚洲第一精品夜夜躁人人爽| 欧美重口另类videos人妖| 国产不卡av在线免费观看| 日韩一区二区三区xxxx| 成人久久一区二区三区| 欧美日韩国产综合视频在线观看中文| 亚洲午夜未满十八勿入免费观看全集| 欧美亚洲在线播放| 精品久久久视频| 亚洲国产另类 国产精品国产免费| 亚洲白拍色综合图区| 国产欧美精品久久久| 欧美色道久久88综合亚洲精品| 最近2019中文字幕在线高清| 亚洲人成自拍网站| 97超碰蝌蚪网人人做人人爽| 久久成人av网站| 亚洲最大的成人网| 欧亚精品在线观看| 亚洲综合视频1区| 国产精品久久久久久亚洲影视| 国产精品黄色影片导航在线观看| 亚洲自拍另类欧美丝袜| 亚洲国产精品999| 成人女保姆的销魂服务| 亚洲国产日韩精品在线| 亚洲激情免费观看| 亚洲欧美另类中文字幕| 国产97色在线| 国产精品69久久久久| 国产精品你懂得| 国产免费一区二区三区在线观看| 日韩色av导航| 中文日韩在线观看| 亚洲欧美中文日韩v在线观看| 亚洲国产精品成人va在线观看| 91精品国产91久久久久福利| 亚洲新中文字幕| 国产一区二区视频在线观看| 久久国产天堂福利天堂| 亚洲欧美精品suv| 人人澡人人澡人人看欧美| 国产精品吹潮在线观看| 亚洲欧美日韩高清| 亚洲欧美国产一本综合首页| 欧美久久精品午夜青青大伊人| 成人性生交大片免费观看嘿嘿视频| …久久精品99久久香蕉国产| 欧美午夜片欧美片在线观看| 欧美网站在线观看| 国内精品视频一区| 日韩欧美中文字幕在线观看| 亚洲精品在线看| 午夜精品一区二区三区在线播放| 欧美电影免费观看电视剧大全| 奇米成人av国产一区二区三区| 久久精品一区中文字幕| 久久影视电视剧免费网站| 欧美日韩亚洲激情| 亚洲欧美激情视频| 久久香蕉国产线看观看网| 亚洲日本中文字幕| 欧美噜噜久久久xxx| 久久久精品一区| 久久久999国产| 国产精品精品视频| 国产精品久久久久久久久久| 色一情一乱一区二区| 北条麻妃在线一区二区| 亚洲a∨日韩av高清在线观看| 欧美性猛交xxxx乱大交蜜桃| 欧美黄色片免费观看| 欧美视频精品一区| 国产剧情日韩欧美| 26uuu亚洲伊人春色| 久久久免费精品视频| 日本欧美一级片| 国产精品福利在线| 国产精品美女www爽爽爽视频| 日韩免费av片在线观看| 亚洲成人中文字幕| 亚洲天堂网在线观看| 1769国产精品| 91精品久久久久久久久| 欧美一区二区.| 日韩女优在线播放| 欧美成人精品一区| 亚洲一区二区三区xxx视频| 亚洲性av网站| 国产美女精品免费电影| 91视频国产精品| 精品国内自产拍在线观看| 亚洲一区二区三区在线免费观看| 国产成人精品免高潮在线观看| 日韩av大片在线| 日本欧美爱爱爱| 欧美大胆a视频| 国产成人aa精品一区在线播放| 国产精品白嫩美女在线观看| 精品一区二区电影| 精品久久久久久亚洲精品| 国产精品久久久久久久久影视| 中文在线资源观看视频网站免费不卡| 狠狠爱在线视频一区| 国产精品美乳一区二区免费| 在线免费观看羞羞视频一区二区| 最近2019中文字幕大全第二页| 国产精品美女主播在线观看纯欲| 日韩成人在线观看| 免费91麻豆精品国产自产在线观看| 日韩精品免费在线视频| 国产精品一区二区三| 海角国产乱辈乱精品视频| 久久中文字幕在线视频| 久久香蕉国产线看观看网| 55夜色66夜色国产精品视频| 成人激情免费在线| 亚洲性线免费观看视频成熟| 国产精品久久久久秋霞鲁丝| 亚洲精品97久久| 亚洲精品白浆高清久久久久久|