[Kotlin] 생성자

Jeanine·2022년 7월 14일
0

android

목록 보기
8/10
post-thumbnail
post-custom-banner

생성자의 종류

1) Primary Constructor

  • class를 정의할 때 사용
  • 사용 예시
class Person constructor(firstName: String) { /*...*/ }
  • 만약 annotation이나 visibility modifier가 없으면 constructor 키워드 생략 가능
class Person(firstName: String) { /*...*/ }
  • 생성자 안에 초기화 코드를 넣을 수 없으므로 초기화 코드는 init 블록에 작성 필요
class InitOrderDemo(name: String) {
    val firstProperty = "First property: $name".also(::println)
    
    init {
        println("First initializer block that prints $name")
    }
    
    val secondProperty = "Second property: ${name.length}".also(::println)
    
    init {
        println("Second initializer block that prints ${name.length}")
    }
}

📌 init 블록은 클래스가 생성되면 가장 먼저 실행된다.

2) Secondary Constructors

  • constructor 키워드 필요
  • this 키워드를 통해 Primary Constructor에 delegate 필요 (Primary Constructor가 없어도 암시적으로 delegate 가능)
  • 사용 예시
class Person(val pets: MutableList<Pet> = mutableListOf())

class Pet {
    constructor(owner: Person) {
        owner.pets.add(this) // adds this pet to the list of its owner's pets
    }
}

클래스 인스턴스 생성

  • 코틀린에서는 new 키워드 사용 X
  • constructor를 콜해서 인스턴스 생성 (아래 코드 참고)
val invoice = Invoice()

val customer = Customer("Joe Smith")
profile
Grow up everyday
post-custom-banner

0개의 댓글