반응형
class - 붕어빵 틀
field - 붕어빵에 대한 정보
붕어빵이 같은 틀에 나왔다고 해도 붕어빵 마다 맛과 비율이 다른 것 처럼 각 인스턴스마다 다르다.
instance- 붕어빵
Pig pig = new Pig();
Pig pig2 = new Pig();
pig2.weight = 80; // 붕어빵에 대한 정보
Pig pig3 = new Pig();
pig3.weight = 110; // 붕어빵에 대한 정보
1. static
만약 static이라고 선언을 하면 age라는 필드는 인스턴스(붕어빵)에 종속되는 것이 아니라 class(붕어빵 틀)에 종속되는 것이다. 그러므로 age의 값은 인스턴스가 만들어질때 다 같은 값으로 만들어지게 된다.
즉, 오로지 1개만 존재한다.
static public int age;
2. static이 필요한 이유
인스턴스에 고유한 값을 부여하는 경우
class Pig
{
static public int count = 1;
public Pig()
{
id = count;
count++;
Console.WriteLine($"내 id 번호 : {id}");
}
static void Main(string[] args)
{
Pig pig = new Pig();
Pig pig2 = new Pig();
Pig pig3 = new Pig();
}
3. 함수에 사용되어지는 static
함수에 static을 사용하면 유일성이 보장된다.
01 static을 함수에서 사용하는 이유
static 함수에서는 필드 값에 접근할 수 없다.
02 오류가 나는 이유
Piggy 함수는 Pig class에 종속되어 있는 공용 함수이다. 그러므로 공용 함수는 각각 개개인의 고유한 정보에 접근할 수 없기 때문이다. weight값은 객체마다 값이 다 다를 수도 있는데 어떤 객체의 weight인지 알 수 가 없기 때문에 static 함수 안에서는 static 변수만 연산을 할 수 있다.
4. static함수가 인스턴스에 접근하는 방법
static public Pig createPig()
{
Pig pig = new Pig();
pig.weight = 110;
pig.name = "piggy";
return pig;
}
static은 class에 종속되어 있기 때문에 함수 호출이 다르다.
일반 함수는 객체에서 함수를 호출하는데 static 함수는 class에 종속되어 있으므로 바로 클래스에서 접근하여 호출 할 수 있다.
01 static 함수 호출
Pig pig = Pig.createPig(); // static 함수 createPig()
Console.WriteLine();
02 일반 함수 호출
pig.Eat(); // 일반 함수 Eat()
rand.Next();
본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다.
반응형
'유니티 공부 > C# 문법' 카테고리의 다른 글
C# 문법 - 은닉성(public, protected, private) (0) | 2023.04.12 |
---|---|
C# 문법 - 상속성 (0) | 2023.04.11 |
C# 문법 - this 키워드 (0) | 2023.04.11 |
C# 문법 - 생성자 (0) | 2023.04.11 |
C# 문법 - 스택과 힙 (0) | 2023.04.11 |
댓글