출처

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;
	}
}

Kotlin constructor

코틀린 클래스에서 언급하였던 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와의 다른 점을 정리하면

constructor 정리