코틀린 프라이빗 생성자

Kailash Vaviya 2023년6월20일
코틀린 프라이빗 생성자

Java 프로그래밍에서 기본 생성자를 private으로 정의할 수 있습니다. 그런 다음 public static 메서드를 사용하여 생성자에 액세스할 수 있습니다. 그러나 Kotlin에서 가능합니까?

Kotlin 역시 private 생성자를 생성할 수 있습니다. 어떻게? 이 기사에서 볼 것입니다.

Kotlin 비공개 생성자

생성자는 Kotlin 클래스의 특수 멤버 함수입니다. 개체를 만들고 시작할 때 호출됩니다.

Kotlin private 생성자는 class에 대한 사용자 지정 가시성을 활성화하는 데 유용합니다. 또한 Kotlin class의 기본 생성자를 숨깁니다. 예를 들어 메모리 효율성을 위해 원치 않는 객체 생성을 방지하고 싶다고 가정합니다. 이를 달성하기 위해 private 생성자를 사용할 수 있습니다.

액세스 한정자 키워드인 private과 컴패니언 객체를 사용하여 Kotlin 생성자를 private으로 정의할 수 있습니다. 클래스 구성원은 컴패니언 개체의 개인 구성원에 액세스할 수 있습니다.

생성자를 비공개로 선언하는 구문은 다음과 같습니다.

class class_Name private constructor()

개인 생성자의 작업

private 생성자는 클래스 private의 기본 생성자를 만들어 작동합니다. 다른 클래스가 private 생성자를 사용하여 객체를 생성하는 것을 방지합니다.

private 생성자를 만들 때 정적 메서드를 사용하는 것이 가장 좋습니다. 그 이유는 정적 메소드가 객체 초기화 없이 실행될 수 있기 때문입니다.

이제 private 생성자는 동일한 클래스에서 개체를 만들고 초기화할 수 있습니다. 그러나 다른 클래스의 개체를 초기화하려고 하면 오류가 발생합니다.

private 생성자의 장단점

Kotlin에서 private 생성자의 이점을 살펴보는 것으로 시작하겠습니다.

private 생성자를 사용하는 첫 번째 이점은 보안입니다. 다른 어떤 클래스도 private 클래스의 데이터에 액세스할 수 없으므로 보안이 유지됩니다.

메모리 효율성은 private 생성자를 사용하는 이점이기도 합니다. 즉, 단일 인스턴스만 생성됩니다. 또한 기본 생성자의 자동 생성을 방지할 수도 있습니다.

단점으로 다가가면 private 생성자는 상속을 허용하지 않습니다. 또한 private 생성자 클래스를 초기화하려면 중첩 클래스 또는 static 메서드를 사용해야 합니다.

Kotlin 비공개 생성자의 데모

다음은 위의 구문을 사용하여 private 생성자로 클래스를 만드는 예입니다.

import exampleClass.Companion.example

class exampleClass private constructor() {
    companion object {
        fun example() = exampleClass()
    }
}

class exampleClass1: Thread() {
    public override fun run() {
        println("The application is running on ${Thread.currentThread()}")
    }
}

class exampleClass2: Runnable {
    public override fun run() {
        println("Now the application is running on ${Thread.currentThread()}")
    }
}

fun main(){
    val v1 = example()
    println(v1)
    val th1 = exampleClass1()
    th1.start()
    val runnable = exampleClass2()
    val th2 = Thread(runnable)
    th2.start()
}

출력:

exampleClass@77afea7d
The application is running on Thread[Thread-0,5, main]
Now the application is running on Thread[Thread-1,5, main]
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