접근 제한자(access modifier)
클래스나 필드 변수, 메서드(이하 멤버)에 대한 접근을 제어하는 용도로 사용
객체 지향의 핵심 요소인 캡슐화, 정보 은닉을 위해 사용
접근 제한자의 종류
public
- 가장 넓은 범위의 접근 제한자
- 어디에서든지 해당 멤버에 접근이 가능
- public으로 선언된 멤버는 모든 패키지에서 제한 없이 접근할 수 있음
protected
- 같은 패키지 내의 클래스와, 해당 클래스를 상속받은 외부 패키지에서 접근 가능
- 외부 패키지의 클래스에서는 상속을 통해 접근할 수 있지만, 인스턴스를 생성하여 직접 접근은 불가능
default (package-private)
- 접근 제한자를 명시하지 않으면 default 접근 제한이 적용됨
- 같은 패키지 내의 클래스에서만 접근이 가능하고, 다른 패키지에서는 접근 불가
private
- 가장 제한적인 범위의 접근 제한자
- private으로 선언된 멤버는 해당 클래스 내에서만 접근 가능, 다른 클래스에서는 접근 불가
클래스 외부에 공개해서 사용할 메소드에는 public 접근 제한자 사용
클래스의 필드 변수(상태값)는 private으로 구현(외부에서 제어가 불가능하도록)