使用 outerClass.this 从内部类内部访问外部类


-

non-static- 内部类对外部类的所有常规成员具有完全的可访问性。 但是还有另一种方法可以使用(outerClass.this.regularMember(..访问这些成员,请查看以下代码:

public class Car {
  int x = 3;
  public static int hp =6;
  public void move()
  {
    System.out.println(hp);
  }
  public  class Engine{
     public int hp =5;
     public int capacity; 
     public void start()
     {
        Car.this.move(); // or we can use only move();
     }
  }
}
  1. 您能否解释一下使用Car.this.move();move();之间是否有任何实际区别
  2. 你怎么能解释Car.this的这种语法,因为据我所知,这里指的是引擎类型的对象,但是如果我使用另一个引用,比如通过做Engine smallEngine = new Engine();那么这个关键字不能smallEngine替换。
  1. 如果您的Engine类具有move方法,则move()Car.this.move() 不同。

  2. this表示当前实例。 如果要引用外部类,可以使用外部类限定 this 关键字以引用外部类的实例。 要记住的重要一点是,Engine的实例(因为它不是静态的(总是伴随着Car的实例,因此您可以引用它。

您不能说OuterClass.smallEngine.move(),因为这会与访问静态公共字段的语法冲突 OuterClass .

如果OuterClass有这样的字段:

 public static String smallEngine;

。那么上面的语法将是模棱两可的。 由于this是一个关键字,因此不能有一个名为 this 的字段,因此语法OuterClass.this永远不会模棱两可。

相关内容

  • 没有找到相关文章

最新更新