BlogJava 聯系 聚合 管理  

          Blog Stats

          隨筆檔案

          exams


          java世界

          世界Java

          . this是指當前對象自己。
          當在一個類中要明確指出使用對象自己的的變量或函數時就應該加上this引用。如下面這個例子中:
          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 ");
          }
          }

          運行結果s =  MCP Bootcamp
          1 -> this.s =   MCP certifications
          2 -> this.s =  MCP Bootcamp !
          在這個例子中,構造函數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() {
          a.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。
          posted on 2007-08-31 14:32 java2java 閱讀(560) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 尉犁县| 安泽县| 阳曲县| 乌兰察布市| 河源市| 博罗县| 衡阳市| 吉木乃县| 伊川县| 舟曲县| 宁海县| 海丰县| 延安市| 临西县| 潜山县| 鹿邑县| 上林县| 邮箱| 东港市| 都安| 武威市| 石柱| 南溪县| 威海市| 驻马店市| 溧水县| 昭苏县| 石门县| 广丰县| 区。| 屏南县| 阜康市| 郓城县| 大埔区| 新余市| 武隆县| 易门县| 威宁| 汾阳市| 辽宁省| 绍兴县|