淺談 Java 中 this 的使用

來源:互聯網
上載者:User

1. this是指當前對象自己。    當在一個類中要明確指出使用對象自己的的變數或函數時就應該加上this引用。如下面這個例子中:public class A {String s = "Hello";public A(String s) {System.out.println("s = " + s);System.out.println("1 -> this.s = " + this.s);this.s = s;System.out.println("2 -> this.s = " + this.s);}public static void main(String[] args) {new A("HelloWorld!");}}    運行結果:s = HelloWorld!1 -> this.s = Hello2 -> this.s = HelloWorld!    在這個例子中,建構函式A中,參數s與類A的變數s同名,這時如果直接對s進行操作則是對參數s進行操作。若要對類A的變數s進行操作就應該用this進行引用。運行結果的第一行就是直接對參數s進行列印結果;後面兩行分別是對對象A的變數s進行操作前後的列印結果。

    2. 把this作為參數傳遞    當你要把自己作為參數傳遞給別的對象時,也可以用this。如:public class A {public A() {new B(this).print();}public void print() {System.out.println("Hello from A!");}}public class B {A a;public B(A a) {this.a = a;}public void print() {print();System.out.println("Hello from B!");}}    運行結果:Hello from A!Hello from B!    在這個例子中,對象A的建構函式中,用new B(this)把對象A自己作為參數傳遞給了對象B的建構函式。

    3. 注意匿名類和內部類中的中的this。    有時候,我們會用到一些內部類和匿名類。當在匿名類中用this時,這個this則指的是匿名類或內部類本身。這時如果我們要使用外部類的方法和變數的話,則應該加上外部類的類名。如下面這個例子:public class A {int i = 1;public A() {Thread thread = new Thread() {public void run() {for(;;) {A.this.run();try {sleep(1000);} catch(InterruptedException ie) {}}}};thread.start();}

public void run() {System.out.println("i = " + i);i++;}

public static void main(String[] args) throws Exception {new A();}

}    在上面這個例子中,thread是一個匿名類對象,在它的定義中,它的run函數裡用到了外部類的run函數。這時由於函數同名,直接調用就不行了。這時有兩種辦法,一種就是把外部的run函數換一個名字,但這種辦法對於一個開發到中途的應用來說是不可取的。那麼就可以用這個例子中的辦法用外部類的類名加上this 引用來說明要調用的是外部類的方法run。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.