객체지향 프로그래밍(OOP)의 중요한 개념으로, 객체의 데이터를 외부에서 직접 접근하지 못하도록 하고, 필요한 경우에만 메서드를 통해 접근할 수 있도록 제한하는 기법이다.
이를 통해 데이터의 무결성을 유지하고, 코드의 유지보수성을 높일 수 있다.
데이터는 모두 숨기고, 기능은 꼭 필요한 기능만 노출하는 것이 좋은 캡슐화이다.
-> 캡슐화를 통해 문제점 해결
| 구분 | 같은 클래스 | 같은 패키지 | 자식 클래스 | 전체 |
|---|---|---|---|---|
| public | O | O | O | O |
| protected | O | O | O | |
| (default) | O | O | ||
| private | O |
private 은 나의 클래스 안으로 속성과 기능을 숨길 때 사용, 외부 클래스에서 해당 기능을 호출할 수 없다.default 는 나의 패키지 안으로 속성과 기능을 숨길 때 사용, 외부 패키지에서 해당 기능을 호출할 수 없다.protected 는 상속 관계로 속성과 기능을 숨길 때 사용, 상속 관계가 아닌 곳에서 해당 기능을 호출할 수 없다.public 은 기능을 숨기지 않고 어디서든 호출할 수 있게 공개한다.private -> default -> protected -> public
순서대로 private이 가장 많이 차단, public이 가장 많이 허용한다.
클래스 레벨의 접근 제어자는 public 과 default만 사용할 수 있다.