반응형

[Oracle Java Tutorial을 읽고 순서에 의해 정리한 후 본인의 경험과 이해를 바탕으로 작성된 글임을 밝힌다.]

[Java Tutorial, 자바 프로그래밍 기초 배우기, Java Programming, 자바 튜토리얼]

클래스 멤버들 접근제어자(Controlling Access to Members of a Class)

접속 레벨 수식어가 다른 클래스가 특정 필드를 사용하거나 메서드를 실행할 수 있을지 결정한다. 2개의 접속 제어 레벨이 있는데 아래와 같다.

  • 최고 레벨 – public 또는 package-private (명시된 수식어 없음)

  • 멤버 레벨 – public, private, protected, or package-private (명시된 수식어 없음)

public으로 선언된 클래스는 모든 클래스들에게 어디서든 보이게 된다. 만약 클래스에 접근제어자가 없다면 (디폴트 또는 패키지용) 이 경우는 같은 패키지 내에서 접근이 가능하다.

최고 레벨에서는 이 두 가지를 사용할 수 있다. 멤버 레벨에서는 여기에 두가지를 더할 수 있다. 바로 protectedprivate이다. Private는 오직 해당 클래스에서만 접근이 가능하다. 외부에서는 접근이 불가능하다. protected는 같은 패키지 내에서 접근이 가능하고 또한 다른 패키지라도 서브클래스라면 접근이 가능하다. 이 네가지 접근제어자를 정리해 본다.

public (class, package, subclass, all)

protected (class, package, subclass)

디폴트 (class, package)

private (class)

모든 접근제어자는 자신의 클래스에는 접근이 가능하다.

 

 

접근 레벨은 두 가지 방법으로 영향을 끼친다. 첫째, 자바 플랫폼에 있는 클래스들 같은 또 다른 소소에서 가져온 클래스를 사용할 때 접속 레벨은 우리가 만든 클래스가 사용할 수 있는 그 클래스들의 멤버들로 결정된다. 둘째, 클래스를 작성할 때 우리가 작성한 클래스에 있는 모든 멤버 변수와 메서드들의 접근 레벨을 결정해야 한다.

접근 레벨 선택 팁!

만약 다른 프로그래머가 여러분의 클래스를 사용한다면 오용으로 인해 오류가 발생하지 않는지 확인하기를 원할 것이다. 접근 레벨은 이런 경우 도움이 될 것이다.\

  • 특정 멤버에 대해 적합한 가장 제한적인 접근 레벨을 사용해라. 특별히 좋은 이유가 없다면 private를 사용해라.

  • 상수 선언 외엔 public를 사용하지 마라. Public 필드는 개개의 구현에 연결하기 쉽고 여러분의 코드를 바꾸는 유연성을 제한하게 된다.

반응형