상속 등을 통해 서로 상호작용하는 클래스 간에 접근 범위를 제어할 때 접근 지정자는 중요한 요소이다.
자바에는 4가지 접근 지정자가 있다.
public, protected, default, private이다. default는 기본 접근 지정자로 어떠한 접근 지정자도 선언하지 않으면 기본으로 설정되는 접근 지정자이다.
접근이 허용 가능한 범위는 위의 표와 같다.
간단한 예제를 보자. Developer 클래스와 HelloWorld 클래스는 동일한 패키지에 존재하는 클래스이다. 따라서 Developer 클래스의 멤버 변수 중에 private 지정자를 가진 변수를 제외한 모든 변수에 접근이 가능하다. 만약 private로 지정된 변수 d를 호출하려고 하면 에러가 발생한다.
private 변수에 접근을 하기 위해서는 public 지정자를 사용한 getter 함수를 만들어 사용하면 된다.
이렇게 private 지정자를 사용하면 외부에서 직접적으로 데이터에 접근하여 잘못된 값을 할당하는 등의 문제를 예방할 수 있다. 값을 변경하려면 함수(setter)나 생성자를 통해서 하도록 하면 안전장치가 하나 생기는 것이다. 대신 값을 가져올 때도 위 예제처럼 getter 함수가 필요하다.