簡體   English   中英

java中此關鍵字的顯式作用域如何工作?

[英]How does an explicitly scoped this keyword in java work?

我知道this關鍵字用於指向當前的類字段並像這樣調用構造函數:

class A{
String name;
  public A(String name)
  {
   this.name=name;
   this.(name.length());
  }

  public(int len)
  {
   //some code here
  }
}

但我最近遇到了:

class B extends A
{
A varA = B.this;
} 

我不明白這是怎么工作的。 誰能詳細說明一下

B.this是對B類實例的引用。

隨着B擴展A ,可以聲明類型A的變量並將其分配給對B類實例的引用。

在您的示例中, B.this等效於this ,因此它不是非常說明性的。 當您開始使用內部類時, this聲明更有價值。

class Outer {
  public void doSomething() {
  }

  class Inner {
    public void doSomething() {
      Outer.this.doSomething();
    }
  }
}

注意Inner類中Outer.this的使用。 沒有它,內部類就沒有之間消除歧義的方式this是指內在實例和this是指外實例。

B.this意味着您正在獲取B類實例的引用/指針, B繼承自A,因此您實際要做的是使用B的引用/指針初始化A。

當您在anonymous/inner類中調用B class的實例時, B.this很有用。

您也可以調用this ,它等效於B.this但是您不能在anonymous/inner類中調用this ,否則您將得到它們的實例而不是class B實例。

實際上, this關鍵字用於引用類的實例。

當你做

this.name

您是從類A的實際實例中引用屬性name

當你做

B.this

您指的是B級實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM