如何在java中明确限定此关键字?

时间:2014-06-25 06:39:34

标签: java

我知道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的工作原理。任何人都可以详细说明

4 个答案:

答案 0 :(得分:2)

B.this是对B类实例的引用。

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

答案 1 :(得分:1)

在您拥有的示例中,B.this相当于this,因此它不是非常具有说明性。当您开始使用内部类时,Scoped this声明更有价值....

class Outer {
  public void doSomething() {
  }

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

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

答案 2 :(得分:0)

B.this表示您正在获取B类实例的引用/指针, B 继承自 A ,因此您实际执行的操作是初始化您的 A ,其参考/指针为 B

B.thisB class类中调用anonymous/inner的实例时非常有用。

你也可以拨打this,这相当于B.this,但你不能在this课程中拨打anonymous/inner,否则你会得到他们的实例而不是class B {{1}}实例。

答案 3 :(得分:0)

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

当你这样做时

this.name

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

当你这样做时

B.this

您指的是B类intance。