클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한하는 기능
자바는 4가지 종류의 접근 제어자를 제공
private : 모든 외부 호출을 막음default : 같은 패키지 안에서 호출은 허용protected : 같은 패키지 안에서 호출 + 상속 관계의 호출 허용public : 모든 외부 호출 허용접근 제어자의 핵심은 속성과 기능을 외부로부터 숨기는 것!
접근 제어자를 사용하지 않으면 사용자(개발자)는 메서드를 사용하여 특정 필드 값에 접근하는 것이 아닌 직접적으로 필드에 접근하는 문제, 너무 많은 메서드가 사용자(개발자)에게 노출되어 오히려 사용자가 어떻게 사용해야 하는지 복잡해지는 문제가 발생할 수 있다.
private, default, protected, public 모두 사용 가능
private, default 두 개만 사용 가능
하나의 자바 파일에 public 클래스는 하나만 등장할 수 있음
public 클래스는 반드시 파일명과 이름이 같아야 함하나의 자바 파일에 default 접근 제어자를 사용하는 클래스는 무한정 만들 수 있음
public 클래스 없이 default 클래스로만 이루어진 경우 파일명과 이름이 같은 default 클래스가 존재하지 않아도 됨데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어서 외부에서의 접근을 제한하는 것
-> 속성과 기능을 하나로 묶고, 외부에 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨기는 것
어떤 것을 숨기고 어떤 것을 노출해야 할까?