C#
프로퍼티(Property)
코다람쥐
2022. 1. 25. 17:56
1. 은닉성
객체지향의 은닉성을 지키기위해서 캡슐화를 통해 메소드를 사용하여 멤버변수에 접근하거나 반환받는 방식을 사용했다.
캡슐화 사용예시
class Orc
{
protected int hp;
protected int attack;
int GetHp() { return hp; }
void SetHp(int hp) { this.hp = hp; }
int GetAttack() { return attack; }
void SetAttack(int attack) { this.attack = attack; }
}
2. get, set(프로퍼티)
프로퍼티를 사용하면 더 이상 Get과 Set관련된 함수를 따로 만들지 않아도 된다.
get, set 선언방법
public int Hp
{
get { return hp; }
set { hp = value; }
}
public int Attack
{
get { return attack; }
set { attack = value; }
}
value는 c#에서 제공하는 키워드이다.
set함수와 private
public int Hp
{
get { return hp; }
private set { hp = value; }
}
private을 통해 외부에서 사용을 금지할 수 있다.
메인함수에서 사용
static void Main(string[] args)
{
Orc orc = new Orc();
int hp = orc.Hp; // get 자동호출
orc.Hp = 3; // set 자동호출
}
3. 자동완성 프로퍼티
사실 get, set과 멤버변수도 일일이 타이핑 해주는 게 귀찮을 수 있다. 그래서 c#에서는 자동완성 프로퍼티를 지원해준다.
내용
public int Hp { get; set; }
// private int _hp;
// public int GetHp() { return _hp; }
// public void SetHp(int value) { _hp = value; }
위에 처럼 코드를 정의해주면 실제로는 보이지 않는 주석안의 내용이 클래스 안에 자동으로 포함이된다.
초기화
public int Hp { get; set; } = 100;
이런식으로 프로퍼티를 선언함과 동시에 변수를 초기화 할 수 있다.