접근 지시자

클래스, 필드, 메서드 단위로 외부에서 접근 가능한 범위를 설정하는 것을 말한다.

다른 표현으로는 접근 제한자(Access Modifier), 접근 수준 지시자(Access-level Modifier) 라고도 한다.

 

외부에서 접근 가능한 범위를 설정하기 때문에 아래와 같은 기능을 하게 된다.

  • 객체 생성을 막기 위해 생성자를 호출하지 못하게 함
  • 객체의 특정 데이터를 보호하기 위해 해당 필드에 접근하지 못하게 함
  • 특정 메서드를 호출할 수 없도록 제한하는 기능을 함

접근 지시자 종류

  • public
    • 모든 패키지에서 아무런 제한 없이 호출할 수 있게 한다.
  • protected
    • default 접근 제한과 마찬가지로 같은 패키지에 속하는 클래스에서 호출할 수 있도록 한다.
      차이점은 다른 패키지에 속한 클래스가 해당 클래스의 하위 클래스라면 호출 할 수 있다.
  • package-private (default)
    • 접근 제한자를 명시하지 않았다면 default 접근 제한을 가진다.
      같은 패키지에서는 제한 없이 호출할 수 있으나, 다른 패키지에서는 호출할 수 없다.
  • private
    • 클래스 내부에서만 사용할 수 있다.

접근 지시자 사용 이유

  • 외부로부터의 접근을 제한하여 데이터를 보호하기 위함
    객체지향 개발방법론에서는 이를 '은닉성'이라고 표현함
  • 외부에는 불필요하고 내부적으로만 사용되는 부분을 감추기 위함
    객체지향 개발방법론에서는 이를 '캡슐화'라고 표현함

출처

Controlling Access to Members of a Class

docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html