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

JoJ*_*oJo 13 java

谁能告诉我私人会员的访问级别?很长一段时间我一直对这段代码感到困惑:为什么私有成员,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);
    }
}
Run Code Online (Sandbox Code Playgroud)

Sot*_*lis 28

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

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

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

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