더북(TheBook)

2.5.4 패키지 접근


앞에서 publicprivate 접근 제어자를 살펴보았다. public이 붙은 기능은 모든 클래스에서 사용할 수 있다. 하지만 비공개 기능은 선언한 클래스 안에서만 사용할 수 있다. public이나 private을 지정하지 않으면, 해당 기능(즉 클래스, 메서드, 변수)을 같은 패키지에 속한 모든 메서드에서 접근할 수 있다.

패키지 접근은 패키지 내부 메서드에서는 필요하지만 해당 패키지의 사용자에게는 필요 없는 유틸리티 클래스와 메서드에 유용하다. 또 다른 일반적인 사용 예는 테스트용이다. 테스트 클래스를 같은 패키지에 두면 테스트 클래스에서 테스트 대상 클래스 내부에 접근할 수 있다.

Note ≣

소스 파일 하나에 여러 클래스를 포함할 수 있지만, 기껏해야 한 개만 public으로 선언할 수 있다. 소스 파일에 공개 클래스가 있을 때는 파일 이름이 공개 클래스 이름과 일치해야 한다.


패키지 접근이 기본 값이라는 점은 변수에는 불리하게 작용한다. 흔히 private 제어자를 깜빡 잊어서 의도하지 않게 인스턴스 변수를 해당 패키지 전체에서 접근할 수 있게 하는 실수를 저지른다. 다음은 java.awt 패키지의 Window 클래스에서 발췌한 코드다.

public class Window extends Container {

    String warningString;

    ...

}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.