-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();
}
}
}
Car.this.move();
和move();
Engine smallEngine = new Engine();
那么这个关键字不能被 smallEngine 替代。 答案 0 :(得分:3)
如果您的Engine
课程采用move
方法,那么move()
将与Car.this.move()
不同。
this
表示当前实例。如果要引用外部类,可以使用外部类限定this
关键字以引用外部类的实例。需要记住的重要一点是Engine
的实例(因为它不是静态的)总是伴随着Car
的实例,所以你可以参考它。
您不能说OuterClass.smallEngine.move()
,因为这会与访问OuterClass
的静态公共字段的语法冲突。
如果OuterClass
有这样的字段:
public static String smallEngine;
...然后上面的语法将是暧昧的。由于this
是一个关键字,因此您不能拥有名为this
的字段,因此语法OuterClass.this
永远不会具有暧昧关系。