캡슐화는 관련성 있는 데이터와 그 데이터를 다루는 메서드를 객체 안에 구현하고, 객체의 밖에서 알아야할 필요가 없는 내부 멤버는 숨기는 것을 일컫는다.
1. 접근 제한자
접근 제한자 | 접근 혀용 범위 |
---|---|
private | 클래스 내부만 |
protected | 클래스 내부와 파생 클래스만 |
public | 클래스 외부도 |
internal | 동일한 어셈블리 내 |
internal protected | 동일한 어셈블리 내 혹은 다른 어셈블리의 파생 클래스 |
- 접근 제한자를 생략하면, 클래스는 internal, 클래스의 멤버는 private으로 설정된다.
2. 정보 은닉
3. Property
✍ 샘플 코드
namespace Pjt
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Name = "Tom";
Console.WriteLine(p.Name);
}
}
class Person
{
private string name;
public string Name
{
get
{
Console.WriteLine("Getter Called.");
return name;
}
set
{
Console.WriteLine("Setter Called");
name = value;
}
}
}
}
✅ 결과
Setter Called
Getter Called.
Tom
- set 구문에 있는 value는 예약어로, 프로퍼티에 대입되는 값이다.
- p.Name은 p.name에 직접 접근하는 것이 아니라, 컴파일하며 생성되었을 get_Name이나 set_Name에 접근하는 것이다.