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

时间:2013-11-02 22:53:39

标签: 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);
    }
}

1 个答案:

答案 0 :(得分:26)

规则在JLS chapter on accessibility

  

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

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

顶级课程的章节是here