생성자
주 생성자 (Primary Constructor)
코틀린에선 클래스를 선언하는 동시에 주생성자를 만든다. 주 생성자는 생성자 파라미터를 지정하고 그 생성자 파라미터에 의해 초기화되는 프로퍼티를 정의하는 두 가지 목적으로 쓰인다.
(주 생성자에 넣는 파라미터는 자동으로 필드에 추가된다.)
constructor 키워드 생략
접근 제어자
접근 제어자를 설정하는 경우엔 constructor
키워드를 삭제할 수 없다.
부 생성자 (Secondary Constructor)
부 생성자는 클래스 블록 내에 존재하는 생성자이다. 주 생성자에서는 constructor 키워드를 생략할 수 있었지만, 부 생성자는 constructor 키워드를 생략할 수 없다.
또, 주생성자가 존재한다면 부생성자는 무조건 주생성자에게 직간접적으로 생성을 위임해야 한다.
따라서 name과 age를 파라미터로 가지는 생성자는 주생성자에게 this(name)을 통해 생성을 위임해야 한다.
만약 주생성자나 부생성자를 구현하지 않을 경우에는 코틀린이 자동으로 인자가 없는 생성자를 자동으로 생성해준다.