Kotlin/포스팅

코틀린 생성자

짜집퍼박사(짜박) 2023. 12. 25. 17:54

코틀린에서는 주 생성자와 보조 생성자를 사용하여 클래스의 인스턴스를 생성할 수 있습니다. 아래에서는 각각의 생성자에 대한 내용을 설명합니다.

 

1. 주 생성자 (Primary Constructor)

주 생성자는 클래스의 헤더 부분에 선언됩니다. 주 생성자는 클래스의 주요 속성을 정의하고 초기화할 수 있는 기능을 제공합니다.

 

간단한 주 생성자 선언

class Person(val name: String, var age: Int)

- val 키워드는 읽기 전용 프로퍼티를 나타냅니다.
- var 키워드는 쓰기 가능한 프로퍼티를 나타냅니다.

 

생성자 파라미터에 디폴트 값 지정

class Person(val name: String = "John", var age: Int = 30)

생성자 파라미터에 기본 값을 지정하여, 해당 파라미터를 생략할 수 있습니다.

 

초기화 블록 사용

class Person(val name: String, var age: Int) {
    init {
        println("Person initialized with name: $name, age: $age")
    }
}

init 블록을 사용하여 클래스 인스턴스가 생성될 때 실행되는 초기화 코드를 작성할 수 있습니다.

 

 

2. 보조 생성자 (Secondary Constructor)

보조 생성자는 클래스 내부에 constructor 키워드를 사용하여 정의됩니다. 주 생성자와 함께 사용되어 클래스의 인스턴스를 다양한 방식으로 초기화할 수 있습니다.

 

간단한 보조 생성자

class Person {
    var name: String = ""
    var age: Int = 0

    constructor(name: String, age: Int) {
        this.name = name
        this.age = age
    }
}

 

주 생성자와 함께 사용

class Person(val name: String, var age: Int) {
    // 주 생성자와 함께 사용되는 보조 생성자
    constructor(name: String) : this(name, 0)
}

보조 생성자에서 this 키워드를 사용하여 주 생성자를 호출할 수 있습니다.

 

여러 개의 보조 생성자

class Person {
    var name: String = ""
    var age: Int = 0

    constructor(name: String, age: Int) {
        this.name = name
        this.age = age
    }

    // 또 다른 보조 생성자
    constructor(name: String) {
        this.name = name
    }
}

클래스 내에 여러 개의 보조 생성자를 정의할 수 있습니다.

 

생성자 호출 순서

클래스의 인스턴스를 생성할 때는 주 생성자가 먼저 호출되며, 그 후에 보조 생성자가 호출됩니다. 초기화 블록은 주 생성자 호출 시에 실행됩니다.

class Example(val name: String) {
    init {
        println("Init block: $name")
    }

    constructor(name: String, age: Int) : this(name) {
        println("Secondary constructor: $age")
    }

    init {
        println("Another init block")
    }
}

이렇게 생성자를 사용하면 다양한 방식으로 클래스의 인스턴스를 초기화할 수 있습니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 내포된 클래스  (0) 2023.12.30
코틀린 멤버 가시성  (0) 2023.12.29
코틀린 클래스 내부 구조  (0) 2023.12.25
코틀린 클래스 정의  (0) 2023.12.25
코틀린 try 문으로 예외 처리  (0) 2023.12.25