Kotlin プライベート コンストラクター

Kailash Vaviya 2023年6月20日
Kotlin プライベート コンストラクター

Java プログラミングでは、プライマリ コンストラクタを private として定義できます。 次に、public static メソッドを使用してコンストラクタにアクセスできます。 しかし、それはKotlinで可能ですか?

Kotlin でも、private コンストラクターを作成できます。 どうやって? この記事で説明します。

Kotlin private コンストラクター

コンストラクターは、Kotlin class の特別なメンバー関数です。 これらは、オブジェクトを作成して開始するときに呼び出されます。

Kotlin private コンストラクターは、class へのカスタム可視性を有効にするのに役立ちます。 また、Kotlin class のプライマリ コンストラクターも非表示にします。 たとえば、メモリ効率のために不要なオブジェクトの作成を防止したいとします。 private コンストラクターを使用してそれを実現できます。

アクセス修飾子キーワード private とコンパニオン オブジェクトを使用して、Kotlin コンストラクターを private として定義できます。 クラス メンバーは、コンパニオン オブジェクトの private メンバーにアクセスできます。

コンストラクターをプライベートとして宣言する構文は次のとおりです。

class class_Name private constructor()

private コンストラクターの動作

privateコンストラクターは、クラスのプライマリ コンストラクターをprivateにすることで機能します。 他のクラスがprivateコンストラクターを使用してオブジェクトを作成するのを防ぎます。

private コンストラクターを作成する場合は、static メソッドを使用するのが最適です。 その理由は、static メソッドはオブジェクトの初期化なしで実行できるからです。

これで、private コンストラクターを使用して、同じクラスからオブジェクトを作成および初期化できるようになります。 ただし、他のクラスからオブジェクトを初期化しようとすると、エラーがスローされます。

private コンストラクターの長所と短所

Kotlin の private コンストラクターの利点を探ることから始めましょう。

private コンストラクターを使用する最初の利点はセキュリティです。 他のクラスは private クラスのデータにアクセスできないため、安全になります。

メモリ効率も private コンストラクターを使用する利点であり、単一のインスタンスのみが作成されることを意味します。 さらに、デフォルトのコンストラクターの自動生成を防ぐこともできます。

不利な点 (cons) になると、private コンストラクターは継承を許可しません。 さらに、private コンストラクター クラスを初期化したい場合は、ネストされたクラスまたは static メソッドを使用する必要があります。

Kotlin private コンストラクターのデモ

上記の構文を使用して 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
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