본문 바로가기
프로그래밍/Java

[Java] 캡슐화와 은닉화의 차이

by 시간많은백수 2023. 10. 4.
반응형

💡캡슐화 (Encapsulation)

  • 캡슐화는 데이터와 데이터를 다루는 메서드(함수)를 하나의 단위로 묶는 것을 의미합니다.
  • 캡슐화는 클래스 내부에 멤버 변수(필드)와 해당 변수를 다루는 메서드(게터 및 세터)를 정의함으로써 구현됩니다.
  • 주요 목적은 데이터와 데이터를 다루는 메서드를 노출시키지 않고, 외부에서의 직접적인 접근을 제어하여 데이터의 무결성과 보안을 유지하는 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Student {
    private String name; // 멤버 변수, private으로 캡슐화
    private int age;
 
    public String getName() { // 게터 메서드, 데이터 반환
        return name;
    }
 
    public void setName(String name) { // 세터 메서드, 데이터 설정
        this.name = name;
    }
}
 
 
cs

 

💡은닉화 (Information Hiding)

  • 은닉화는 외부에서의 접근을 완전히 숨기는 것을 의미합니다. 캡슐화를 포함하는 개념 중 하나입니다.
  • 은닉화는 클래스의 내부 구현 상세를 외부로부터 감추고, 오직 필요한 인터페이스(API)만을 노출시킴으로써 구현됩니다.
  • 주요 목적은 클래스의 내부 변경에 대한 영향을 최소화하고, 외부 사용자가 오직 공개된 인터페이스만 사용할 수 있도록 하는 것입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class BankAccount {
    private double balance; // 멤버 변수, private으로 은닉화
 
    public double getBalance() { // 게터 메서드, 잔고 반환
        return balance;
    }
 
    public void deposit(double amount) { // 입금 메서드
        if (amount > 0) {
            balance += amount;
        }
    }
 
    public void withdraw(double amount) { // 출금 메서드
        if (amount > 0 && balance >= amount) {
            balance -= amount;
        }
    }
}
 
 
cs

💻결론

요약하면, 캡슐화는 데이터와 데이터를 다루는 메서드를 클래스 내에서 묶는 개념이며, 은닉화는 클래스의 내부 구현을 외부로부터 감추어야 하는 개념입니다. 은닉화는 캡슐화를 통해 구현될 수 있습니다. 이러한 개념들은 객체 지향 프로그래밍의 핵심 원칙 중 하나인 정보 은닉을 실현하기 위한 도구입니다.

반응형