C#에서 클래스를 정의할 때 자주 사용하는 기능 중 생성자와 프로퍼티는 객체 초기화와 데이터 캡슐화를 간편하게 해주는 중요한 요소이다
이 두 개념을 간단하게 정리해서 이해해보자.
생성자는 클래스의 인스턴스를 생성할 때 자동으로 호출되는 메서드로 주로 멤버 변수를 초기화할 때 사용한다
public class Player
{
public string name;
public int level;
public Player()
{
name = "철수";
level = 1;
}
public Player(string name)
{
this.name = name;
this.level = 1;
}
}
클래스와 동일한 이름이며, 반환형(void 도 안붙는다)이 없고 오버로딩까지 가능한 것을 볼 수 있다.
멤버 변수를 외부에 노출하지 않으면서, 값을 안전하게 읽거나 쓸 수 있도록 도와준다.
필드를 직접 노출하지 않고 간접적으로 접근하게 함.
private string name;
public string Name // 프로퍼티
{
get { return name; }
set { name = value; }
}
public string Name { get; set; }
public int Level { get; private set;}
자동 프로퍼티는 내부 로직이 없을 때 간단하게 읽고 쓰기할 때 유용하게 쓰인다
만약에 생성자가 외부에서 접근 불가능한 상태라고 가정해보면
public class Player
{
private string name; // 외부에서 직접 접근 불가능
public string Name // 프로퍼티
{
get { return name; }
set { name = value; }
}
public Player(string name)
{
this.name = name;
}
}
이렇게 외부에서 접근 불가능한 상태일때 프로퍼티를 사용하면 접근이 가능해진다.
Player player = new Player("철수");
// 접근 불가능 (private 이므로)
player.Name = "영희"; // 프로퍼티를 통해 설정
Console.WriteLine(player.Name); // 프로퍼티를 통해 읽기