접근 제어자를 사용하면 클래스 멤버(필드와, 메소드) 외부에서의 직접적인 접근을 허용하지 않는 멤버를 설정하여 정보 은닉을 구체화할 수 있다.
접근 제어자는 객체 지향의 개념에서 캡슐화, 추상화, 은닉화와 관련이 있다.
만약 모든 변수와 메서드의 접근을 허용하고 모든 정보를 표현한다면 다른 개발자가 해당 패키지를 사용하면서 수정하면 안되는 데이터를 수정할 수 있고, 또 모든 정보를 보는 것은 비지니스 로직이 사용자들에게 공개되는 것과 다름 없다.
따라서 적절한 접근 제어자를 이용해 사용자에게 반드시 필요한 변수와 메서드만 공개하는 것이 좋다.
class OtherClass {//접근 제어자를 생략한 경우 자동으로 default
int a = 10;//접근 제어자를 생략한 경우 자동으로 default
public int b = 20;
protected int c = 30;
private int d = 40; //private: 다른 클래스 에서는 접근 불가
}