为什么嵌套类的私有成员可以通过封闭类的方法访问?

谁能告诉我私人会员的访问级别? 很长一段时间我一直对这段代码感到困惑:为什么私有成员,Line类的k,可以在outter类的“print”方法中访问?

public class myClass { public static class Line{ private double k; private double b; private boolean isVertical; public Line(double k, double b, boolean isVertical){ this.k = k; this.b = b; this.isVertical = isVertical; } } public static boolean print(Line line){ System.out.println(line.k); } } 

规则在JLS关于可访问性的章节中

否则,如果成员或构造函数被声明为private ,则当且仅当它发生在包含成员或构造函数声明的顶级类(第7.6节)的主体内时才允许访问

这里的成员字段k在类Line声明。 当您在print方法中访问它时,您将在顶级类的主体内访问它,该顶级类包含该成员的声明

关于顶级课程的章节就在这里 。