Java & Spring/Java

캡슐화와 접근 제어자

승주우에요 2026. 1. 6. 21:43

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