클래스에 주생성자가 있다면, (부생성자가 있는 경우) 모든 부생성자는 주생성자에게 위임을 하거나 다른 부생성자에게 위임을 해야 한다. 예를 들어 앞의 예제에서 두 번째 생성자를 주생성자로 바꿀 수 있다.
class Person(val fullName: String) { constructor(firstName: String, familyName: String): this("$firstName $familyName") }
부생성자의 파라미터 목록에는 val/var 키워드를 쓸 수 없다는 점에 유의하자.
class Person {
// error: 'val' on secondary constructor parameter is not allowed
constructor(val fullName: String)
}
부생성자와 클래스 상속이 결합되는 경우, 상위 클래스 생성자를 호출하는 것과 관련된 다른 문제가 있다. 이에 대해서는 8장 클래스 계층 이해하기에서 살펴본다.