BlogJava 聯(lián)系 聚合 管理  

          Blog Stats

          隨筆檔案

          exams


          java世界

          世界Java

          . this是指當(dāng)前對象自己。
          當(dāng)在一個(gè)類中要明確指出使用對象自己的的變量或函數(shù)時(shí)就應(yīng)該加上this引用。如下面這個(gè)例子中:
          public class A {
          String s = " MCP certifications ";
          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(" MCP Bootcamp ");
          }
          }

          運(yùn)行結(jié)果s =  MCP Bootcamp
          1 -> this.s =   MCP certifications
          2 -> this.s =  MCP Bootcamp !
          在這個(gè)例子中,構(gòu)造函數(shù)A中,參數(shù)s與類A的變量s同名,這時(shí)如果直接對s進(jìn)行操作則是對參數(shù)s進(jìn)行操作。若要對類A的變量s進(jìn)行操作就應(yīng)該用this進(jìn)行引用。運(yùn)行結(jié)果的第一行就是直接對參數(shù)s進(jìn)行打印結(jié)果;后面兩行分別是對對象A的變量s進(jìn)行操作前后的打印結(jié)果。

          2. 把this作為參數(shù)傳遞
          當(dāng)你要把自己作為參數(shù)傳遞給別的對象時(shí),也可以用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() {
          a.print();
          System.out.println("Hello from B!");
          }
          }
          運(yùn)行結(jié)果:
          Hello from A!
          Hello from B!
          在這個(gè)例子中,對象A的構(gòu)造函數(shù)中,用new B(this)把對象A自己作為參數(shù)傳遞給了對象B的構(gòu)造函數(shù)。

          3. 注意匿名類和內(nèi)部類中的中的this。
          有時(shí)候,我們會(huì)用到一些內(nèi)部類和匿名類。當(dāng)在匿名類中用this時(shí),這個(gè)this則指的是匿名類或內(nèi)部類本身。這時(shí)如果我們要使用外部類的方法和變量的話,則應(yīng)該加上外部類的類名。如下面這個(gè)例子:
          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();
          }
          }
          在上面這個(gè)例子中, thread 是一個(gè)匿名類對象,在它的定義中,它的 run 函數(shù)里用到了外部類的 run 函數(shù)。這時(shí)由于函數(shù)同名,直接調(diào)用就不行了。這時(shí)有兩種辦法,一種就是把外部的 run 函數(shù)換一個(gè)名字,但這種辦法對于一個(gè)開發(fā)到中途的應(yīng)用來說是不可取的。那么就可以用這個(gè)例子中的辦法用外部類的類名加上 this 引用來說明要調(diào)用的是外部類的方法 run。
          posted on 2007-08-31 14:32 java2java 閱讀(559) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 城口县| 台南市| 江陵县| 邵阳县| 湖北省| 调兵山市| 昭苏县| 铜山县| 山西省| 宝坻区| 贡山| 长顺县| 临武县| 宜昌市| 玉屏| 六枝特区| 孙吴县| 穆棱市| 呼伦贝尔市| 女性| 临邑县| 吐鲁番市| 宁国市| 从化市| 甘泉县| 黎城县| 五河县| 隆德县| 凤山市| 调兵山市| 江达县| 囊谦县| 玉屏| 襄汾县| 永修县| 新绛县| 元江| 恩施市| 平舆县| 临澧县| 桐城市|