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 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