생성자, 파괴자
클래스의 이름과 같은 함수를 만든다면, 생성자가 된다
생성자는 객체가 생성될 때 호출되며 매개변수 즉 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
반응형
'공부 > Unity' 카테고리의 다른 글
[Unity] 제네릭, delegate, lambda (0) | 2025.05.23 |
---|---|
[Unity] abstract, 인터페이스, struct, 메모리 (0) | 2025.05.23 |
[Unity] 명명규칙 (파스칼 케이스 / 카멜 케이스), print vs Debug.Log (0) | 2025.05.22 |
[Unity] 대관람차 돌리는 법 (Low poly Ferris Wheel) (0) | 2024.12.11 |
[Unity] 믹사모 캐릭터, 애니메이션 유니티에 불러오기 / Mixamo Texture 적용하는 법 (3) | 2024.11.04 |