AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

캡슐화의 개념과 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 키워드와 접근자 메서드를 통해 효과적으로 적용할 수 있습니다.