이전 챕터에서 클래스를 선언할 때 class Person 옆에 괄호안에 속성들을 나열했었다. 그것이 생성자이다.
fun main() {
var a = Person("박보영", 1990)
var b = Person("전정국", 1997)
var c = Person("장원영", 2004)
}
class Person(var name:String, val birthYear:Int) {
init{
println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
}
}
// 결과
1990년생 박보영님이 생성되었습니다.
1997년생 전정국님이 생성되었습니다.
2004년생 장원영님이 생성되었습니다.
100명의 인스턴스를 만드는데 그 중 90명이 1997년생이라면? 이때 기본 생성자를 사용할 수 있다.
기본 생성자와 다른 형태의 생성자를 제공하여 인스턴스 생성 시 편의를 제공하거나 추가적인 구문을 수행하는 기능이다.
fun main() {
var a = Person("박보영", 1990)
var b = Person("전정국", 1997)
var c = Person("장원영", 2004)
var d = Person("이루다")
var e = Person("차은우")
var f = Person("류수정")
}
class Person(var name:String, val birthYear:Int) {
init{
println("${this.birthYear}년생 ${this.name}님이 생성되었습니다.")
}
constructor(name:String) : this(name, 1997){
println("보조 생성자가 사용되었습니다.")
}
}
// 결과
1990년생 박보영님이 생성되었습니다.
1997년생 전정국님이 생성되었습니다.
2004년생 장원영님이 생성되었습니다.
1997년생 이루다님이 생성되었습니다.
보조 생성자가 사용되었습니다.
1997년생 차은우님이 생성되었습니다.
보조 생성자가 사용되었습니다.
1997년생 류수정님이 생성되었습니다.
보조 생성자가 사용되었습니다.
기본 생성자와 보조 생성자는 클래스를 사용하는 사람에게 다양한 방법으로 인스턴스를 생성하는 방법을 제시함으로써 편의를 제공한다.