Java關鍵字(五)——this


  this 也是Java中的一個關鍵字,在《Java編程思想》第四版第五章5.4小節對 this 關鍵字是這樣介紹的:

  this 關鍵字只能在方法內部使用,表示對“調用方法的那個對象”的引用。

  其實簡單來說 this 關鍵字就是表示當前對象,下面我們來具體介紹 this 關鍵字在Java中的用法。

1、調用成員變量

  在一個類的方法內部,如果我們想調用其成員變量,不用 this,我們會怎么做?

 1 package com.ys.test;
 2 
 3 /**
 4  * Create by YSOcean
 5  */
 6 public class ThisTest {
 7 
 8     private String name = "Tom";
 9 
10     public void  setName(String name){
11         name = name;
12     }
13 
14     public String getName() {
15         return name;
16     }
17     
18 }

  看上面的代碼,我們在 ThisTest 類中創建了一個 name 屬性,然后創建了一個 setName 方法,注意這個方法的形參也是 String name,那么我們通過 name = name 這樣賦值,會改變成員變量 name 的屬性嗎?

1     public static void main(String[] args) {
2         ThisTest tt = new ThisTest();
3         tt.setName("Marry");
4         System.out.println(tt.getName());//Tom
5     }

  打印結果是 Tom,而不是我們重新設置的 Marry,顯然這種方式是不能在方法內部調用到成員變量的。因為形參的名字和成員變量的名字相同,setName 方法內部的 name = name,根據最近原則,編譯器默認是將這兩個 name 屬性都解析為形參 name,從而導致我們設值操作和成員變量 name 完全沒有關系,當然設置不了。

  解決辦法就是使用 this 關鍵字。我們將 setName 方法修改如下:

1     public void  setName(String name){
2         this.name = name;
3     }

  在調用上面的 main 方法進行賦值,打印的結果就是 Marry 了。

  this 表示當前對象,也就是調用該方法的對象,對象.name 肯定就是調用的成員變量。

2、調用構造方法

  構造方法是與類同名的一個方法,構造方法沒有返回值,但是也不能用 void 來修飾。在一個類中,必須存在一個構造方法,如果沒有,編譯器會在編譯的時候自動為這個類添加一個無參構造方法。一個類能夠存在多個構造方法,調用的時候根據參數來區分。

 1 package com.ys.test;
 2 
 3 /**
 4  * Create by YSOcean
 5  */
 6 public class ThisTest {
 7     private String name;
 8     
 9     public ThisTest(){
10         this("Marry");
11     }
12     public ThisTest(String name) {
13         this.name = name;
14     }
15 }

  通過 this("Marry") 來調用另外一個構造方法 ThisTest(String name) 來給成員變量初始化賦值。

  注意:通過 this 來調用構造方法,只能將這條代碼放在構造函數的第一行,這是編譯器的規定,如下所示:放在第二行會報錯。

  

3、調用普通方法

  this 表示當前對象,那么肯定能夠調用當前類的普通方法。

1     public void printName(){
2         this.say();
3     }
4     
5     public void say(){
6         System.out.println("say method...");
7     }

  第 2 行代碼,在 printName() 方法內部調用了 say() 方法。

4、返回當前對象

1 /**
2  * Create by YSOcean
3  */
4 public class ThisTest {
5 
6     public Object newObject(){
7         return  this;
8     }
9 }

  這表示的意思是誰調用 newObject() 方法,那么就返回誰的引用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM