2013-11-02 34 views
8

有人可以告訴我有關私人會員的訪問級別嗎?我很長時間以來對這段代碼感到困惑:爲什麼可以使用outter類的「print」方法訪問Line類的私有成員k?爲什麼可以通過封閉類的方法訪問嵌套類的私有成員?

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); 
    } 
} 

回答

22

規則是在JLS chapter on accessibility

否則,如果成員或構造被聲明private,然後 訪問被許可,當且僅當它的 頂層的主體內發生包含成員聲明或構造函數的類(第7.6節)。

此處的成員字段k在類Line中聲明。當您在print方法中訪問它時,您在包含該成員的聲明的頂級類的正文中訪問它

關於頂級課程的章節是here

相關問題