출처
https://thdev.tech/kotlin/2017/03/09/Kotlin-Constructor-Init/
kotlin의 constructor 정리해보려고 합니다.
우선 일반적인 java에서의 생성자는 아래와 같이 className(매개 변수)
형태로 정의 가능합니다.
생성자를 여러 개 두더라도 Overloading
을 이용하여 이를 해결할 수 있습니다.
public class Sample {
private String name;
private int age;
private String birthday;
public Sample(String name) {
this.name = name;
}
public Sample(String name, int age) {
this(name);
this.age = age;
}
public Sample(String name, int age, String birthday) {
this(name, age);
this.birthday = birthday;
}
}
코틀린 클래스에서 언급하였던 constructor
에 대해서 정리하면 아래와 같습니다.
아래와 같이 java 스타일 그대로를 생성자 정의로 사용해보겠습니다.
class Sample constructor(val name: String) {
constructor(name: String, age: Int): this(name)
constructor(name: String, age: Int, birthday: String): this(name, age)
}
java처럼 그대로 읽으면 constructor(val name: String)
이 존재하고, 그다음 constructor(name: String, age: Int): this(name)
에서는 첫 번째 constructor에 name만을 넘겨주고 자기를 정의합니다.
우선 좀 더 코틀린 스럽게 정리하면 아래와 같이 정의 가능하겠습니다.
default
생성자 정의를 사용하면 코틀린 스럽죠.
class Sample(val name: String, val age: Int = 0, val birthday: String = "") { // Do nothing }
java와의 다른 점을 정리하면