C#
C# - 캡슐화
Dev_Jen
2025. 7. 1. 11:03
반응형
✅ 캡슐화(Encapsulation)란?
"객체의 내부 상태(데이터)를 외부로부터 숨기고, 허용된 방식으로만 접근하도록 제한하는 것."
✅ 핵심 요약
항목설명
목적 | 데이터를 보호하고, 잘못된 접근/수정을 방지 |
수단 | 접근 제한자 (private, public, protected 등) 사용 |
결과 | 유지보수성 증가, 의도치 않은 버그 감소, 코드 안정성 향상 |
✅ 왜 중요한가?
- 모든 데이터에 마음대로 접근할 수 있다면?
- 예: 체력이 음수로 떨어진다거나, 돈이 마이너스가 되는 상황 발생
- 캡슐화를 통해 이런 비정상적인 상황을 차단할 수 있음
✅ 예제 코드 (C# 기준)
❌ 잘못된 설계: 데이터가 완전 노출됨
public class Player
{
public int hp; // 외부에서 직접 접근 가능
}
Player p = new Player();
p.hp = -100; // 💥 논리적으로 말이 안 되는 상태
✅ 캡슐화 적용 예시
public class Player
{
private int hp = 100; // 외부에서 직접 접근 불가
public int HP
{
get { return hp; }
set
{
if (value >= 0) hp = value;
}
}
}
- 이제 외부에서는 HP 프로퍼티로만 접근 가능
- if (value >= 0) 같은 검증 로직도 넣을 수 있어
✅ Unity에서 캡슐화 예시
public class Enemy : MonoBehaviour
{
[SerializeField] private float speed = 3.0f;
public void SetSpeed(float value)
{
if (value >= 0)
speed = value;
}
public float GetSpeed()
{
return speed;
}
}
SerializeField로 에디터에서는 보이게 하되,
스크립트에서는 private하게 유지하는 것도 일종의 캡슐화야
✅ 캡슐화를 위한 주요 키워드 정리
키워드설명
private | 외부 접근 불가, 내부에서만 사용 가능 |
public | 외부 접근 허용 |
protected | 자식 클래스는 접근 가능 |
internal | 같은 어셈블리 내에서는 접근 가능 |
property (get, set) | 안전한 접근 인터페이스 제공 |
✅ 요약 한 줄
캡슐화는 “객체 내부의 상태를 보호하고, 오직 허용된 방식으로만 외부에 접근하게 만드는 것”이다.
이 내용 또한 회사 면접에서 나왔던 내용이다 개발할떄 잘만 써놓고 용어를 몰라서... 잘 모르곘다고 대답했었다..ㅋㅋㅋㅋㅋ...바보..앞으로는 절대 그럴 일 없겠다..하하...
반응형