공부/Unity
[C#] 생성자, 파괴자
굴러다니다니
2025. 5. 22. 17:28
생성자, 파괴자
클래스의 이름과 같은 함수를 만든다면, 생성자가 된다
생성자는 객체가 생성될 때 호출되며 매개변수 즉 parameter가 있는 생성자도 만들 수 있다
~클래스의 이름 함수는 파괴자이며, 객체가 파괴될 때 호출된다
객체를 사용하는 곳이 없으면 가비지 컬렉터에 의해 자동으로 호출된다
*프로그래머가 메모리를 정리하기엔 복잡하기에 가비지 컬렉터가 안쓰는 메모리를 자동으로 정리해줌
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Practice4 : MonoBehaviour
{
class 동물
{
int 나이;
public 동물()
{
print("동물 디폴트 생성자");
}
public 동물(int a)
{
나이 = a;
print($"동물 파라미터 생성자{나이}");
}
~동물()
{
print("동물 파괴자");
}
}
class 포유류: 동물
{
public 포유류()
{
print("포유류 디폴트 생성자");
}
public 포유류(int a): base(a)
{
print($"포유류 파라미터 생성자 {a}");
}
~포유류()
{
print("포유류 파괴자");
}
}
class 고양이: 포유류
{
public 고양이()
{
print("고양이 디폴트 생성자");
}
public 고양이(int a) : base(a)
{
print($"고양이 파라미터 생성자 {a}");
}
~고양이()
{
print("고양이 파괴자");
}
}
class 개 : 포유류
{
public 개()
{
print("개 디폴트 생성자");
}
public 개(int a) : base(a)
{
print($"개 파라미터 생성자 {a}");
}
~개()
{
print("개 파괴자");
}
}
void Start()
{
동물 c = new 고양이();
동물 d = new 개(13);
}
}
위와 같이 코드를 쓰고 실행한다면 어떤 결과가 나올까
동물 -> 포유류 -> 고양이 순서로 부모 클래스부터 생성자가 호출되며, 파라미터를 넣은 쪽도 마찬가지로 부모 클래스 -> 자식 클래스 순서로 생성자를 만들었다.
매개변수가 있는 생성자는 같은 클래스의 매개변수가 없는 생성자를 호출하지 않는다.
파괴자의 호출 순서는 왼쪽의 역순으로 진행됨을 확인할 수 있다
728x90
반응형