16

谁能告诉我私人会员的访问级别?我对这段代码困惑了很久:为什么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);
    }
}
4

1 回答 1

42

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

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

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

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

于 2013-11-02T22:56:55.327 回答