为什么嵌套类的私有成员可以通过封闭类的方法访问?
谁能告诉我私人会员的访问级别? 很长一段时间我一直对这段代码感到困惑:为什么私有成员,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
方法中访问它时,您将在顶级类的主体内访问它,该顶级类包含该成员的声明 。
关于顶级课程的章节就在这里 。