Kotlin Init와 생성자의 차이점

Kailash Vaviya 2024년2월15일
  1. 코틀린 생성자
  2. 코틀린 초기화
Kotlin Init와 생성자의 차이점

Kotlin은 객체 지향 프로그래밍(OOP) 언어입니다. 생성자와 init 블록은 이 Android 프로그래밍 언어의 중요한 구성 요소입니다.

이 기사에서는 이 두 구성 요소의 차이점을 살펴봅니다.

코틀린 생성자

이름에서 알 수 있듯이 Kotlin 생성자는 클래스를 구성하는 데 도움이 됩니다. 클래스는 OOP 언어의 기반입니다.

Kotlin에는 기본 및 보조의 두 가지 유형의 생성자가 있습니다. 각 클래스에는 constructor 키워드를 사용하여 정의된 하나의 기본 생성자와 원하는 수의 보조 생성자가 있을 수 있습니다.

Kotlin 기본 생성자

Kotlin의 기본 생성자는 항상 클래스 헤더의 일부입니다. 선택적 매개변수를 가질 수 있습니다.

class exampleClass public constructor(str: String, i: Int){
    //functions
}

모든 클래스 헤더에 기본 생성자가 있다면 왜 많은 클래스가 constructor 키워드를 사용하지 않고 선언되는지 궁금할 것입니다.

기본 생성자와 함께 액세스 한정자 또는 주석을 사용하지 않으려면 키워드를 생략할 수 있습니다.

class exampleClass (str: String, i: Int){
    //functions
}

기본 생성자는 클래스 헤더의 일부이므로 코드를 포함할 수 없습니다. init 키워드를 사용하여 이니셜라이저 블록에 코드를 넣을 수 있습니다. 자세한 내용은 이 문서의 뒷부분에서 설명합니다.

코드 작성은 허용되지 않지만 다음 구문을 사용하여 기본 생성자 속성을 선언하고 초기화할 수 있습니다.

class exampleClass (val str: String, var i: Int){
    //functions
}

또는

class exampleClass (
    val str: String,
    var i: Int,
){
    //functions
}

기본 생성자에서 속성의 기본값을 선언할 수도 있습니다.

class exampleClass (val str: String, var i: Int = 15){
    //functions
}

Kotlin 보조 생성자

기본 생성자 외에도 constructor 키워드를 사용하여 하나 이상의 보조 생성자를 선언할 수도 있습니다.

클래스의 모든 보조 생성자는 this 키워드를 사용하여 기본 생성자에게 위임해야 합니다. 다음은 Kotlin에서 보조 생성자를 사용하는 예입니다.

fun main(args: Array<String>){
    var Stu = Student("Zack",17, "Kotlin")
    Stu.printStudentDetails()
}

// This is the primary constructor
class Student constructor(var firstName: String, var age: Int){
    var expert: String = "Nothing"

    // Creating a secondary constructor
    constructor (firstName: String, age: Int, expert: String): this(firstName,age){
        this.expert = expert
    }

    fun printStudentDetails(){
        println("$firstName, a $age years old student, is an expert in $expert.")
    }
}

출력:

Kotlin 보조 생성자 예

실행 코드

코틀린 초기화

Kotlin init 키워드는 이니셜라이저 블록을 작성하는 데 사용됩니다. 이러한 블록은 기본 생성자에 대한 코드를 작성하는 데 도움이 됩니다.

기본 생성자는 클래스 헤더의 일부이므로 코드를 작성할 수 없습니다. 따라서 보조 생성자 또는 초기화 블록을 사용할 수 있습니다.

Kotlin init 블록에서 기본 생성자의 매개변수와 속성을 사용할 수도 있습니다.

주어진 숫자가 50보다 큰지 또는 Kotlin init 블록을 사용하지 않는지 확인하는 예를 살펴보겠습니다.

class Numbers(firstName: String, num2: Int) {
    var res = false
    val n1 = 50

    init {
        res = num2 > n1
    }
}

fun main(){
    var numbers = Numbers("This number is greater than 50", 63)
    println(numbers.res)
}

출력:

Kotlin 초기화 예시

실행 코드

Kotlin init 블록의 코드는 기본 생성자의 일부로 작성되므로 기본 생성자의 일부가 됩니다.

그리고 2차 생성자와 1차 생성자의 위임은 전자가 실행되는 동안 가장 먼저 수행되기 때문에 init 블록은 2차 생성자의 함수보다 먼저 실행됩니다.

다음은 예제 코드입니다. 이 코드에서는 Kotlin init 위에 보조 생성자 코드를 작성했습니다. 그러나 init 코드가 먼저 실행됩니다.

class Person {
    constructor(i: Int) {
        println("Person $i")
    }

    init {
        println("This part will execute before the secondary constructor's code.")
    }
}

fun main() {
    Person(1)
}

출력:

Kotlin init가 첫 번째 예를 실행

실행 코드

Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

관련 문장 - Kotlin Constructor