private으로 선언된 클래스 내부의 public static 변수 접근
조회수 8324회
private class Example {
public static final PI = 3.14;
...
}
위와 같은 코드 구성이 있다면, PI는 외부에서 접근이 가능한가요? 클래서는 private으로 외부로부터의 접근을 제한하는데, PI는 외부의 접근을 허용하니, 이 상황에선 어떤 접근권한이 우위를 갖는지, 아니면 static이기 때문에 예외를 갖는지 모르겠습니다.
1 답변
-
최상위 클래스 선언에서는 private 는 사용할 수 없습니다.
생각해보면 당연한것으로 접근하지도 못하는 클래스를 만들이유가 없습니다. 그렇다면 private(protected) class 선언등은 언제 사용하는가?
바로 Inner class 를 만들때 사용합니다. 해당 Inner class의 접근제한을 할 수 있습니다.
예제를 분석해보세요.
package yhjung; public class MyClass { private class InnerMyClass { // InnerClass 는 private 이므로 MyClass에서만 사용가능 public InnerMyClass() { System.out.println(this.getClass().getName()); } public String getName(){ return this.getClass().getName(); } } public class InnerMyClassForPublic { // public 이므로 외부에서 접근가능 public InnerMyClassForPublic() { System.out.println(this.getClass().getName()); } public String getName(){ return this.getClass().getName(); } } public void showInnerClassName() { InnerMyClass ic = new InnerMyClass(); String icName = ic.getName(); System.out.println(icName); } } package yhjung; public class Main { public static void main(String[] args) { MyClass mc = new MyClass(); mc.showInnerClassName(); MyClass.InnerMyClassForPublic mc2 = mc.new InnerMyClassForPublic(); System.out.println(mc2.getName()); } } yhjung.MyClass$InnerMyClass yhjung.MyClass$InnerMyClass yhjung.MyClass$InnerMyClassForPublic yhjung.MyClass$InnerMyClassForPublic
댓글 입력