기본 패턴
csharp
public class Player
{
public string Name { get; private set; }
private int score;
protected int level;
}설명
- 접근 제한자는 어떤 코드가 특정 타입이나 멤버에 접근할 수 있는지 결정합니다.
public은 가장 넓게 공개하고,private은 현재 타입 안에서만 접근하게 합니다.protected는 상속받은 타입까지 범위를 넓히고,internal은 같은 어셈블리 안으로 범위를 제한합니다.- 캡슐화는 상태를 모두 숨기라는 뜻이 아니라, 바깥에 보여 줄 최소 인터페이스만 명확히 드러내라는 뜻에 가깝습니다.
짧은 예제
csharp
public class BankAccount
{
public decimal Balance { get; private set; }
public void Deposit(decimal amount)
{
Balance += amount;
}
}빠른 정리
| 항목 | 설명 |
|---|---|
public | 어디서나 접근 가능 |
private | 현재 타입 안에서만 접근 가능 |
protected | 현재 타입 + 파생 타입 |
internal | 같은 어셈블리 안에서 접근 가능 |
private set | 읽기는 공개, 쓰기는 내부 제한 |
주의할 점
처음부터 모두 public으로 열어 두면 이후에 구조를 바꾸기 어려워집니다. 외부에 반드시 필요한 것만 공개하는 편이 유지보수에 유리합니다.