1. 자바는 객체지향 프로그래밍(OOP) 언어
자바(Java)는 객체지향 프로그래밍(OOP, Object-Oriented Programming) 언어로, 프로그램을 데이터와 기능(메서드)을 묶어 관리하고, 유지보수와 확장성을 높이기 위해 만들어졌다.
OOP의 핵심 4가지 개념은:
- 캡슐화(Encapsulation)
- 상속(Inheritance)
- 다형성(Polymorphism)
- 추상화(Abstraction)
이번 글에서는 이 중 캡슐화(Encapsulation)를 정리함
2. 캡슐화(Encapsulation)란?

캡슐화는 데이터(속성)과 그 데이터를 처리하는 메서드(기능)를 하나로 묶고 외부로부터 내부 상태를 숨기는 것.
즉, 데이터와 메서드를 하나의 '캡슐(클래스)'에 담아 필요하지 않은 정보는 외부에서 접근하지 못하게 제한하여, 잘못된 접근이나 변경으로부터 객체를 보호하는 개념
- vs 데이터 은닉(Data Hiding)
많이 헷갈리는 부분인데, 데이터 은닉은 캡슐화의 한 방법, 수단임
- 데이터 은닉: 객체 내부 데이터를 외부에서 직접 접근하지 못하도록 숨기는 것.
- 캡슐화: 데이터를 메서드와 함께 클래스 안에 묶어 관리하고, 내부 구현을 숨기며 외부에는 필요한 기능만 제공하는 것.
"캡슐화를 실현하기 위한 방법으로 데이터 은닉을 사용한다"
라고 이해하면 된다
- 왜 캡슐화를 사용할까 ?
- 데이터 보호: 잘못된 값으로 변경되는 것을 막기 위해
- 코드 변경 용이성: 내부 구현을 감추고 인터페이스만 공개해, 내부 구조를 바꿔도 외부에 영향이 적음
- 유지보수성 향상: 객체의 책임이 명확해짐
- 유효성 검증 기능 : 값을 설정할 때 조건을 걸어 잘못된 값이 저장되지 않도록 방지할 수 있
자바에서 캡슐화 구현 방법
1. 멤버 변수는 private로 선언 : 외부에서 직접 접근 못하도록 숨기기 위함
2. 외부 접근은 public 메서드로 제어 : 주로 getter와 setter 메서드를 통해 값을 읽거나 씀
예제코드 ) 자바 캡슐화
다음은 Person 클래스를 통해 캡슐화를 적용한 자바 예제이다.
이렇게 하면 외부에서 person.name = "sowon"처럼 직접 접근하는게 아니라 person.setName("sowon")으로만 값을 바꿀 수 있고, setAge처럼 잘못된 값이 들어오는 것도 방어할 수 있음 !!
정리
1. 캡슐화는 객체지향 프로그래밍의 핵심으로, 데이터와 메서드를 하나로 묶고 외부에 필요한 기능만 제공하며 나머지는 숨기는 것
2. 데이터 은닉은 캡슐화를 실현하기 위한 방법으로,
멤버 변수를 private으로 숨기고 getter, setter로 접근을 제어하여 데이터를 보호
3. 캡슐화를 통해 코드의 안정성, 유지보수성, 데이터 보호, 유효성 검증 등을 향상시킬 수 있다

끝 ㅎㅎ
'Study > Java' 카테고리의 다른 글
| 정적 멤버와 static (0) | 2025.07.08 |
|---|---|
| 인스턴스 멤버와 this (0) | 2025.07.08 |
| 접근제어자 (0) | 2025.07.08 |
| 상속(Inheritance)와 다형성(Polymorphism) (0) | 2025.07.07 |
| JAVA 기본 개념(배열, 연산자, 조건문, 반복문) (0) | 2025.07.06 |