백지부터 시작하는 이세계 코딩 생활
Constructor ( 생성자 ), Destructor ( 소멸자 ) 본문
생성자 ( Constructor )
생성자란 객체 (Object) 를 인스턴스화 (Instantiate) 할 때 호출되는 매서드 (Method) 이다.
생성자(영어: constructor, 혹은 약자로 ctor)는 객체 지향 프로그래밍에서 객체의 초기화를 담당하는 서브루틴을 가리킨다. 생성자는 객체가 처음 생성될 때 호출되어 멤버 변수를 초기화하고, 필요에 따라 자원을 할당하기도 한다. 객체의 생성 시에 호출되기 때문에 생성자라는 이름이 붙었다.
new 키워드 위에 붙는 Method Name () 부분이 생성자를 호출하는 부분이다.
생성자는 클래스를 처음 만들 때 맴버변수나 상수를 초기화 하는 역할을 한다.
따라서 생성자는 클래스를 생성할 때만 호출한다.
특징 :
* 생성자도 매서드의 일종으로 구조는 일반적인 매서드와 같다. 그러나 생성자와 다르게 생성자의 이름은 클래스의 이름과 같으며 반환타입 (return type) 을 갖지 않는다.
* 객체를 인스턴스화 할 때, 초기화 해줘야 하는 필드 (Field) 나 호출해야 하는 매서드를 포함시킬 수 있다.
* 오버로딩 (Overloading) 이 가능하다.
* 인스턴스 (Instance)를 만들기 위해 클래스는 생성자를 구현해야 한다. 따로 구현하지 않으면 컴파일 과정에서 생성해 준다. (디폴트 생성자 : Default Constructor )
디폴트 생성자 : Default Constructor
생성자 ( 매개변수 ) : Constructor
디폴트 생성자란 매개변수 (Parameter) 와 매서드 (Method) 가 없는 생성자이다.
using UnityEngine;
public class Human
{
public string name;
public int age;
public float tall;
public Human() { } // 생성자 ( Default Contructor )
public Human(string _name, int _age, float _tall) // 생성자 ( Constructor with name, age, tall )
{
this.name = _name;
this.age = _age;
this.tall = _tall;
}
}
using UnityEngine;
public class Constructor : MonoBehaviour
{
public class People
{
Human human = new Human();
Human H = new Human("HamHuman", 20, 1209);
}
}
Destructor ( 소멸자 )
소멸자는 객체가 사라질 때 자동으로 발생하는 매서드이다.
가비지 컬렉터(garbage collector)에 의해 객체가 소멸하는 시점을 판단하여 호출되는 매서드.
GC에 의해 소멸되기 때문에 매번 소멸되는 순서가 다를 수 있다.
GC에 의해 자동으로 처리되기 때문에 특별한 이유가 있지 않는한 구현하지 않는다. (성능과 효율적인 부분)
* 소멸자 이름은 클래스 이름과 같아야 하고 앞에 ~(물결표)를 적어주면 된다.
* 인수와 반환 값이 없다
* 상속되거나 오버로드 될 수 없으며, 사용자가 호출할 수도 없다.
using UnityEngine;
public class Constructor : MonoBehaviour
{
public class People
{
Human human = new Human();
Human H = new Human("HamHuman", 20, 1209);
~Humna() // 소멸자 (Destructor)
}
}
Ref
boycoding.tistory.com/249?category=1067100
https://ko.wikipedia.org/wiki/%EC%83%9D%EC%84%B1%EC%9E%90
'백지부터 시작하는 이세계 유니티 생활 since 2020' 카테고리의 다른 글
Property, Attribute (속성) (0) | 2020.12.09 |
---|---|
Encapsulation (캡슐화) with Access modifier (접근제한자) (0) | 2020.12.09 |
키워드 this 와 Base (0) | 2020.12.09 |
Inheritance (0) | 2020.12.09 |
Object Pool (0) | 2020.12.04 |