캡슐화의 개념과 Java에서의 구현
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보~중급 Java 개발자
- 객체지향 프로그래밍(OOP) 개념 이해를 위한 학습자
- 데이터 보안 및 코드 구조 개선에 관심 있는 개발자
핵심 요약
- 캡슐화(Encapsulation)는 데이터(변수)와 메서드(코드)를 하나의 단위로 묶어 내부 상태를 외부에서 직접 접근하지 못하게 하는 설계 원칙입니다.
- Java에서 구현 방법:
private
변수에public
getter/setter 메서드를 제공하여 데이터 접근 제어 가능합니다. - 주요 이점: 데이터 유효성 검증, 보안 강화, 코드 재사용성 향상.
섹션별 세부 요약
1. 캡슐화의 정의
- 데이터와 메서드를 하나의 단위로 묶는 것
- 내부 상태를 외부에서 직접 조작하지 못하게 하는 데이터 은닉(Data Hiding) 기법
- OOPL(객체지향 프로그래밍)의 핵심 원칙 중 하나
2. Java에서의 캡슐화 구현
- 변수 선언:
private
키워드로 변수를 선언하여 외부 접근 차단
```java
private String accountHolderName;
private int accountNumber;
```
- 접근자 메서드:
public
getter/setter를 통해 값 조작
```java
public String getAccountHolderName() { return accountHolderName; }
public void setAccountHolderName(String name) { ... }
```
- 생성자: 초기값 설정 시 유효성 검증 적용
```java
if (initialBalance >= 0) this.balance = initialBalance;
else System.out.println("Invalid balance! set to 0 by default.");
```
3. 캡슐화의 이점
- 데이터 보호: 외부에서
private
변수 직접 수정 불가능 - 유연한 제어:
setter
메서드 내에서 입력값 검증 가능
```java
if (name != null && !name.isEmpty()) this.accountHolderName = name;
```
- 메서드 재사용:
deposit
/withdraw
메서드로 중복 로직 제거
4. 예제 코드 분석
- BankAccount 클래스 구조:
- private
변수: accountHolderName
, accountNumber
, balance
- public
메서드: deposit()
, withdraw()
, displayAccountInfo()
- 실행 결과:
- deposit(-500)
→ "Invalid deposite amount!" 출력
- withdraw(2000)
→ "Invalid funds" 출력
- setAccountHolderName("")
→ "Invalid name!" 출력
결론
- 캡슐화를 구현할 때는
private
변수에public
메서드를 반드시 제공하고, 유효성 검증 로직을 메서드 내부에 포함해야 합니다. - 예제에서 보듯이, 캡슐화는 데이터 보안과 코드 유지보수성을 극대화하는 핵심 기법입니다.
- Java에서는
private
,public
키워드와 접근자 메서드를 통해 효과적으로 적용할 수 있습니다.