더북(TheBook)

코틀린에서는 프로퍼티 이름 뒤에 기본 값을 표현함으로써 똑같은 결과를 얻을 수 있다.

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 역주 이렇게 정의한 클래스는 생성자가 두 개 있다. 하나는 StringInstant를 인자로 받되 Instant를 생략해도 되는 생성자이고, 다른 하나는 Name이라는 클래스의 인스턴스를 인자로 받는 생성자다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.