程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 深入認識this的使用

深入認識this的使用

編輯:關於JAVA

眾所周知,this的兩種用法非常普遍.

  1.代替當前實例.例如this.成員變量名,this.成員方法名

  2.代替構造函數,比如this().

  上述兩點不再贅述.

  但是,我覺得this還有一種現象大家可能沒有注意到:

  可能有時候你會發現如下的現象:

以下為引用的內容:
  public class Test implements Runnable{
      Thread thread1;
      Thread thread2;
      public Test(){
        thread1 = new Thread(this,"1");//---------------------->|
        thread2 = new Thread(this,"2");//---------------------->|
      }
      public static void main(String args[]){
        Test t = new Test();
        t.startThreads();
      }
      public void run(){
        //do thread's things
      }
      public void startThreads(){
        thread1.start();
        thread2.start();
      }
    }

  在|處,你可能很奇怪:為什麼可以在還沒有創建的時候就可以自己調用自己呢?

  為了講清楚上面的現象,必須先講清楚構造函數的繼承.

  如果有兩個類成繼承關系,那麼

  如果缺省構造器不顯式聲明,那麼子類構造器必先調用其父類缺省構造器(其實我覺得叫第一構造器更為合適,就是沒有入參的構造器),再調用自己的構造器。

  下面我們接著談上面奇怪的現象,為什麼還可以在沒有創建子類對象的時候就可以用this代替本身呢?那是因為在調用子類構造器之前,已經調用了父類的缺省構造器(父類為Object).你還可以讓Test繼承一個類,看看是否先調用其父類的構造器.

  在上文中,由於自身能力有限,並沒有將這個話題深入討論,只是膚淺得作以解釋,希望能夠拋磚引玉.請指正!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved