JAVA之關於This的用法

來源:互聯網
上載者:User

標籤:

用類名定義一個變數的時候,定義的應該只是一個引用,外面可以通過這個引用來訪問這個類裡面的屬性和方法,那們類裡面是夠也應該有一個引用來訪問自己的屬性和方法納?呵呵,JAVA提供了一個很好的東西,就是 this 對象,它可以在類裡面來引用這個類的屬性和方法。先來個簡單的例子:

 1 public class ThisDemo {   2     String name="Mick"; 3     public void print(String name){ 4         System.out.println("類中的屬性 name="+this.name); 5         System.out.println("局部傳參的屬性="+name); 6     }    7     public static void main(String[] args) { 8         ThisDemo tt=new ThisDemo(); 9         tt.print("Orson");10     }11 }
View Code

關於返回類自身的引用,Thing in Java有個很經典的例子,通過this 這個關鍵字返回自身這個對象然後在一條語句裡面實現多次的操作,還是貼出來。

 1 public class ThisDemo {   2     int number; 3     ThisDemo increment(){ 4          number++; 5          return this; 6     }   7   private void print(){ 8          System.out.println("number="+number); 9     }10     public static void main(String[] args) {11         ThisDemo tt=new ThisDemo();12          tt.increment().increment().increment().print();13     }14 }
View Code

那也應該在一個類中定義兩個建構函式,在一個建構函式中通過 this 這個引用來調用另一個建構函式,這樣應該可以實現,這樣的實現機制在實際做應用開發的時候有會有什麼樣子的用處納?貼下寫的代碼:

 1 public class ThisDemo {   2     String name; 3     int age; 4     public ThisDemo (){  5         this.age=21; 6    }      7     public ThisDemo(String name,int age){ 8         this(); 9         this.name="Mick";10     }     11   private void print(){12          System.out.println("最終名字="+this.name);13          System.out.println("最終的年齡="+this.age);14     }15     public static void main(String[] args) {16        ThisDemo tt=new ThisDemo("",0); //隨便傳進去的參數17        tt.print();18     }19 }
View Code

  看上面這段代碼雖然很短,理解起來似乎也很順理成章,在有參數的建構函式中賦值name 在無參數的當中賦值age屬性。但我個人覺得其中有點問題,執行個體化一個類應該先為對象ThisDemo分配記憶體,先調用建構函式ThisDemo(String name,int age),執行到第一行的時候,調用ThisDemo()建構函式,也就是說這裡應該會有兩個記憶體空間的,一個是ThisDemo(String name,int age)執行到一點的空間和另一個是ThisDemo()執行空間,為什麼最後列印出來的結果是都執行個體化了一個對象中的兩個屬性name和age納?請大牛賜教!

   總結一下:

   1) this 關鍵字是類內部當中對自己的一個引用,可以方便類中方法訪問自己的屬性;

   2)可以返回對象的自己這個類的引用,同時還可以在一個建構函式當中調用另一個建構函式(這裡面上面有個問題)

JAVA之關於This的用法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.