코틀린에서는 프로퍼티 이름 뒤에 기본 값을 표현함으로써 똑같은 결과를 얻을 수 있다.
class Person(val name: String, val registered: Instant = Instant.now())
생성자를 좀 더 전통적인 방식으로 오버로드할 수도 있다.2
class Person(val name: String, val registered: Instant = Instant.now()) { constructor(name: Name) : this(name.toString()) { // 생성자 구현 추가 가능 } }
자바와 마찬가지로 생성자를 정의하지 않으면 인자가 없는 생성자가 자동으로 만들어진다.
비공개 생성자와 프로퍼티
자바와 마찬가지로 생성자를 비공개로 만들면 외부 코드에서 생성자에 접근하지 못하게 막을 수 있다.
class Person private constructor(val name: String)
2 역주 이렇게 정의한 클래스는 생성자가 두 개 있다. 하나는 String과 Instant를 인자로 받되 Instant를 생략해도 되는 생성자이고, 다른 하나는 Name이라는 클래스의 인스턴스를 인자로 받는 생성자다.