빠르게 살펴보기
class 클래스명 constructor(변수) { }
또는
class 클래스명(변수) { }
class 클래스명 {
클래스명(변수) {
}
}
Java
class Person {
private String name;
private int age;
Person(String name) {
this.name = name;
}
Person(String name, int age) {
this.name = name; // 또는 this(name)
this.age = age;
}
}
(Java에서 위와 같이 생성자를 선언하면 기본 생성자가 자동으로 생성되지 않기 때문에 명시적으로 선언하는 것이 좋습니다.)
코틀린
// primary constructor는 constructor 생략 가능
class Person constructor(val name: String, val age: Int) {
// secondary constructor는 constructor 생략 불가능
constructor(name: String) : this(name, 0)
}
fun main() {
var person = Person(age = 25)
print("name : ${person.name}, age : ${person.age}")
}
class Person(var name: String = "Jane", var age: Int)
위 코드를 보면 생성자에서 name을 Jane으로 지정했습니다. 이때 Person 클래스 생성시 age의 값만 명시하여도 name이 Jane으로 초기화 됩니다. 물론 age는 25로 초기화 됩니다.
Java에서의 기본 생성자 형태인 Person() { }와 다른 개념입니다. Java에서 해당 Person 클래스를 사용하려면 name과 age 모두 선언해주셔야 합니다.