[Unity C#] #14 프로퍼티 (Property) - 고박사의 유니티 노트
변수 은닉을 신경쓰지 않으면 변수에 원치 않는 값이 들어갈 수 있지만
은닉과 캡슐화를 지키기에 너무 귀찮아서 그냥 pulblic을 쓰고 싶다 .. (매우 공감ㅎ)
멤버 변수의 은닉성을 지키기 위해 Get(), Set() 멤버 함수를 이용
멤버 변수의 은닉성과 캡슐화 문제점
멤버 변수를 많이 선언할수록 Get/Set 메소드 쌍이 많아지고,
변수에 접근한다는 개념이 아닌 메소드에 접근한다는 느낌이 크다.
get { .. }
접근자는 멤버 변수로부터 값을 읽어오고set { .. }
접근자는 멤버 변수에 값을 할당한다.set { .. }
접근자 안에 있는 value 키워드는 set 접근자의 암묵적 매개 변수public class Player
{
데이터형식 멤버변수이름;
접근지정자 데이터형식 프로퍼티이름
{
get
{
return 멤버변수이름;
}
set
{
멤버변수이름 = value;
}
}
}
public class Player
{
데이터형식 멤버변수이름;
접근지정자 데이터형식 프로퍼티이름
{
get => return 멤버변수이름;
set => 멤버변수이름 = value;
}
}
[Tip]
자동 구현 프로퍼티에서 CurrentHP 프로퍼티로 접근하는 변수는 컴파일러가 자동 생성한다.
그렇기 때문에 우리는 변수의 이름을 모르고, 그 변수에 접근하려면 CurrentHP 프로퍼티를 이용해야 한다.
클래스이름 객체인스턴스 = new 클래스이름()
{
// 콤마를 이용해 구분하며, 마지막 데이터는 뒤에 아무것도 붙이지 않는다.
프로퍼티1 = 값,
프로퍼티2 = 값,
프로퍼티3 = 값
}
interface 인터페이스이름
{
데이터형식 프로퍼티이름1
{
get; set;
}
}
public class 자식클래스 : 인터페이스이름
{
public 데이터형식 프로퍼티이름1
{
// get, set 구현
}
}
public abstract class 클래스이름
{
abstract 접근지정자 데이터형식 프로퍼티이름1
{
get; set;
}
}
public class 자식클래스 : 추상클래스이름
{
public override 데이터형식 프로퍼티이름1
{
//get, set 구현
}
}
추상프로퍼티 Shield의 get; set;은
자동 구현 프로퍼티가 아닌 구현부가 없는 선언 자식 클래스에서 재정의 해야한다.