繁体   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