클래스와 클래스 멤버를 어디까지 접근 허용하는지 제한하는 것.
Person 클래스는 사람이라는 객체임. 누구인지를 보여주고자 하는 name 이란 필드를 사용하는데, 이 name 필드의 객체가 외부에 공개되어있고, 쉽게 접근할 수 있다면???
"로비로고" 란 사람으로 만들고 얼마든지 딴 이름으로 바꿀수 있다면, Person 객체를 믿을수가 없어짐.
이처럼 정보를 은닉하기 위한 방법으로 접근제한자를 사용한다.

접근제한 강도
public < protected < default < private

- 어디서든 호출 가능 (클래스 내부, 같은 패키지, 다른 패키지)
- 클래스, 필드, 메소드 선언에서 사용가능

- 같은 패키지 안에서만 호출 가능
- 해당 클래스의 자식 클래스이면 호출 가능 (다른 패키지에 있어도 자식 클래스는 가능)
- 필드, 메소드, 생성자 선언에 사용 (클래스 선언에서는 사용하지 않음)

- 접근 제한 설정을 하지 않은 기본 상태
- 같은 패키지 안에서는 호출 가능

- 무조건 클래스 내부에서만 호출 가능
- 필드, 메소드, 생성자 선언에 사용 (클래스 선언에서는 사용하지 않음)



접근 제한자 : 클래스와 클래스 멤버에 대해 접근을 어디까지 허용하는지 제한함
public
- 어디서든 접근 가능
- 클래스, 필드, 메소드 선언에서 사용
protected
- 같은 패키지 안이거나 자식 클래스면 호출 가능
- 필드, 메소드, 생성자 선언에 사용
default
- 접근 제한 설정을 하지 않은 기본 상태
-= 같은 패키지 안에서는 호출 가능
private
- 클래스 내부에서만 호출 가능
- 필드, 메소드, 생성자 선언에 사용