1. 캡슐화란?
캡슐화는 객체의 내부 상태와 구현을 외부로부터 숨기는 것이다. 외부에서는 객체의 내부 구조를 알 필요가 없고, 메서드를 통해서만 객체를 사용하도록 제한한다.
- 은닉 : 내부 구현을 감춤
- 보호 : 객체 상태가 잘못 변경되는 것을 막음
캡슐화를 통해 객체는 스스로의 상태를 책임지고 외부의 잘못된 접근으로부터 보호된다.
2. 캡슐화의 목적
- 객체 내부 상태 보호
- 객체 사용 방법 강제
- 코드 변경 시 영향 범위 최소화
- 객체의 책임과 역할 명확화
캡슐화가 되어 있지 않으면 객체의 필드가 어디서든 수정될 수 있고, 그 결과 버그 추적이 매우 어려워짐
3. 접근 제어자란?
접근 제어자는 클래스, 필드, 메서드에 접근할 수 있는 범위를 제한하는 문법 요소이다. 접근 제어자는 하나만 적용가능하다.
- private : 클래스 내부
- (default) : 같은 패키지
- protected : 같은 패키지 + 상속 관계
- public : 어디서든
4. 기타 제어자란?
접근 범위를 정하는 역할은 하지 않지만, 클래스나 멤버의 성격과 동작을 제한하는 키워드이다. 기타 제어자는 여러 개 사용 가능하다.
- static
- final
- abstract
public static final int MAX_SIZE = 100;
// public -> 어디서든 접근 가능
// static -> 클래스에 소속
// final 값 변경 불가
5. 접근 제어자 사용 원칙
- 필드 -> private
- 내부 로직 -> private 또는 default
- 외부 인터페이스 -> public
접근 제어자는 패키지 구조의 영향을 받는다. 패키지는 접근 제어자에 따라 접근 여부가 달라지므로 패키지 구조 설계 역시 캡슐화 설계의 일부라고 볼 수 있다.
6. 정리
- 캡슐화는 객체 내부 구현과 상태를 숨기는 것이다.
- 접근 제어자는 캡슐화를 구현하는 핵심 수단이다.
- 접근 제어자는 하나만 적용 가능
- 기본 원칙은 닫아두고, 필요할 때만 연다
'Java & Spring > Java' 카테고리의 다른 글
| SOLID 원칙 (0) | 2026.01.06 |
|---|---|
| 다형성 (Polymorphism) (0) | 2026.01.06 |
| Object 클래스 (0) | 2026.01.06 |
| 상속(Inheritance)이란 (0) | 2026.01.06 |
| 생성자&this,this() (0) | 2026.01.06 |