在java中显式限定此关键字的作用域是如何工作的?

在java中显式限定此关键字的作用域是如何工作的?,java,Java,我知道这个关键字用于指向当前类字段并调用构造函数,如: 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; } 我不明白这是怎么回事。任何人都可以详细说明

我知道
这个
关键字用于指向当前类字段并调用构造函数,如:

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类实例的引用/指针,B继承自A,所以你实际上是在用B的引用/指针初始化A

B.this
匿名/内部
类中调用
B类的实例时非常有用


你也可以调用
this
,它相当于
B。this
但是你不能在
匿名/内部
类中调用
this
,否则你会得到它们的实例而不是
类B
实例。

B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A

B.this
匿名/内部
类中调用
B类的实例时非常有用


你也可以调用
this
,它相当于
B。this
但是你不能在
匿名/内部
类中调用
this
,否则你会得到它们的实例而不是
类B
实例。

B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A

B.this
匿名/内部
类中调用
B类的实例时非常有用


你也可以调用
this
,它相当于
B。this
但是你不能在
匿名/内部
类中调用
this
,否则你会得到它们的实例而不是
类B
实例。

B。这意味着你得到的是B类实例的引用/指针,B继承自A,因此您实际要做的是使用B的引用/指针初始化A

B.this
匿名/内部
类中调用
B类的实例时非常有用


你也可以调用
this
,它相当于
B。this
但是你不能在
匿名/内部
类中调用
this
,否则你会得到它们的实例而不是
类B
实例。

B。这个
是对
B
类实例的引用


B
扩展
A
时,可以声明
A
类型的变量,并将其分配给
B
类实例的引用。

B。此
是对
B
类实例的引用


B
扩展
A
时,可以声明
A
类型的变量,并将其分配给
B
类实例的引用。

B。此
是对
B
类实例的引用


B
扩展
A
时,可以声明
A
类型的变量,并将其分配给
B
类实例的引用。

B。此
是对
B
类实例的引用


B
扩展
A
时,可以声明类型为
A
的变量,并将其分配给对
B
类实例的引用。

事实上,
this
关键字用于引用类的实例

当你这样做的时候

this.name
B.this
您指的是类
A
的实际实例中的属性
name

当你这样做的时候

this.name
B.this

您指的是
B
类实例。

事实上,
this
关键字用于指代类实例

当你这样做的时候

this.name
B.this
您指的是类
A
的实际实例中的属性
name

当你这样做的时候

this.name
B.this

您指的是
B
类实例。

事实上,
this
关键字用于指代类实例

当你这样做的时候

this.name
B.this
您指的是类
A
的实际实例中的属性
name

当你这样做的时候

this.name
B.this

您指的是
B
类实例。

事实上,
this
关键字用于指代类实例

当你这样做的时候

this.name
B.this
您指的是类
A
的实际实例中的属性
name

当你这样做的时候

this.name
B.this

您所指的是
B
类的重要性。

在您的示例中,
B。此
相当于
,因此说明性不强。作用域
当您开始使用内部类时,此
声明更有价值

class Outer {
  public void doSomething() {
  }

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

注意
Outer.this
internal
类中的用法。没有它,内部类将无法在引用内部实例的
this
和引用外部实例的
this
之间消除歧义。

在您的示例中,
B。this
相当于
this
,因此它不是很好的说明性。作用域
当您开始使用内部类时,此
声明更有价值

class Outer {
  public void doSomething() {
  }

  class Inner {
    public void doSomething() {
      Outer.this.doSomething();
    }
  }
}
注意
Outer.this
internal
类中的用法。如果没有它,内部类将无法运行