2.2.2 클래스 생성자(Constructor)

2.2.2 클래스 생성자(Constructor)

클래스 생성자는 인스턴스가 생성될 때 호출되는 함수예요. 이름은 반드시 new이고, 클래스 안에 여러 개의 생성자를 둘 수는 없습니다. 생성자는 보통 클래스 필드를 초기화하는 데 사용됩니다.

class Point {
  public var x:Int;
  public var y:Int;

  public function new(x:Int, y:Int) {
    this.x = x;
    this.y = y;
  }
}

위 예제에서 Point 클래스는 x:Inty:Int를 받는 생성자를 정의해요. new Point(3, 4)처럼 호출하면 생성자가 실행되어 필드를 초기화합니다. 생성자는 반환 타입을 명시하지 않으며, 항상 클래스의 인스턴스를 반환한다고 간주됩니다.

클래스에 생성자를 정의하지 않으면, 인자가 없는 기본 생성자(default constructor)가 암시적으로 제공됩니다. 상속 관계에서는 자식 생성자가 부모 생성자를 super()로 명시적으로 호출할 수 있어요.

출처: Constructor

본문

생성자의 역할

생성자(new)는 클래스의 새 인스턴스를 만들 때 호출되는 특별한 함수예요. 주로 인스턴스의 필드를 초기화하고, 필요한 사전 작업을 수행합니다. 생성자 이름은 항상 new이며, 반환 타입을 쓰지 않아요.

기본 생성자

생성자를 하나도 정의하지 않으면 인자를 받지 않는 기본 생성자가 자동으로 제공됩니다. 따라서 new ClassName() 형태의 인스턴스화는 언제나 가능해요.

super() 호출

상속 관계에서 자식 생성자는 부모 생성자를 호출할 수 있어요. 명시적으로 super(...)를 호출하지 않으면, 자식 생성자 본문 앞부분에서 부모의 기본 생성자가 호출됩니다. 부모가 인자를 요구하는 생성자를 가졌다면, 자식에서 super(x, y)처럼 인자를 전달해야 해요.

더 알아보기