ki-sd 님의 블로그
[2026-03-20] 캡슐화(Encapsulation)와 데이터 은닉화 본문
객체 지향의 4대 핵심 특징 중 첫 번째인 '캡슐화'를 학습하며, 데이터를 은닉하는 것이 시스템의 안정성에 어떤 영향을 미치는지 깨달았다.
1. 접근 지정자(Access Modifier)의 통제력 클래스와 멤버에 대한 외부 접근을 제한하는 네 가지 보안 단계를 확립했다.
- private: 오직 같은 클래스 내부에서만 접근 가능 (가장 강력한 은닉).
- (default): 같은 패키지 내에서만 접근 가능 (접근 지정자를 생략했을 때).
- protected: 같은 패키지는 물론, 다른 패키지라도 상속 관계인 자식 클래스에서는 접근 가능.
- public: 패키지나 상속 관계에 상관없이 어디서든 자유롭게 접근 가능.
2. 데이터 은닉화(Data Hiding)의 실전 적용
- 외부에서 객체의 변수(필드)에 직접 객체.변수 = 값 형태로 접근하여 데이터를 조작하게 두면, 잘못된 값이 입력되어 시스템이 붕괴될 위험이 있다.
- 따라서 모든 인스턴스 변수는 private으로 선언하여 외부 접근을 원천 차단하고, 오직 검증 로직이 포함된 public 메서드(Getter, Setter)를 통해서만 우회적으로 데이터를 읽고 쓰도록 강제하는 것이 캡슐화의 핵심이다.
- 실습 적용: 크롤링한 음악 데이터를 관리하는 시스템을 구축하며, 캡슐화를 적용했다. 코드가 길어지는 수고로움이 있지만, 유지보수성과 데이터의 무결성을 획기적으로 끌어올릴 수 있음을 체감했다.
'JavaStudy' 카테고리의 다른 글
| [2026-03-24] 다형성(Polymorphism)과 추상화(Abstraction)의 강력함 (0) | 2026.04.17 |
|---|---|
| [2026-03-23] 상속(Inheritance)과 포함(Composition)의 설계 철학 (0) | 2026.04.13 |
| [2026-03-19] 생성자 설계와 파라미터 전달 방식 (Call by Value/Reference) (0) | 2026.04.13 |
| [2026-03-18] 객체 지향 프로그래밍(OOP)의 기초 아키텍처 (0) | 2026.04.13 |
| [2026-03-17] String 클래스의 특수성과 불변성(Immutable) (0) | 2026.04.13 |
