有人能告诉我私人会员的访问级别吗?很长一段时间以来我一直对这段代码感到困惑:为什么私有成员,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);
}
}
答案 0 :(得分:26)
规则在JLS chapter on accessibility
中否则,如果成员或构造函数被声明为
private
,那么 当且仅当它出现在体内时才允许访问 顶级类(第7.6节),包含成员或的声明 构造强>
此处成员字段k
在类Line
中声明。当您使用print
方法访问它时,您将在顶级类的主体内访问它,该类包含该成员的声明。
顶级课程的章节是here。