접근제어자 종류
■private 모든 외부 호출을 막는다
■default 같은 패키지안에서 호출은 허용한다 ■protected 같은 패키지안에서 호출은 허용한다. 패키지가 달라도 상속 관계의 호출은 허용한다 ■public 모든 외부 호출을 허용한다.
접근 제어자 사용 - 필드, 메서드,생성자
private ,default ,protected ,public 모두 사용가능
접근 제어자 사용 - 클래스 레벨
클래스 레벨의 접근 제어자는 private,public 만 사용 가능
캡슐화
객체에는 속성(데이터)과 기능(메서드)이 있다.
캡슐화에서 가장 필수로 숨겨야 하는 것은 속성(데이터)이다.
객체 내부의 데이터를 외부에서 함부로 접근하게 두면, 클래스 안에서
데이터를 다루는 모든 로직을 무시하고 데이터를 변경할 수 있다.
결국 모든 안전망을 다 빠져나가게 된다. 따라서 캡슐화가 깨진다.
객체의 기능 중에서 외부에서 사용하지 않고 내부에서만 사용하는 기능들이 있다.
이런 기능도 모두 감추는 것이 좋다. 사용자 입장에서 꼭 필요한 기능만 외부에 노출하자. 나머지 기능은 모두 내부로 숨기자 정리하면 데이터는 모두 숨기고, 기능은 꼭 필요한 기능만 노출하는 것이 좋은 캡슐화이다