Kotlin での二次コンストラクターの使用
- コトリンの二次建設業者の歴史
- Kotlin セカンダリコンストラクタ
- Kotlin で複数のセカンダリコンストラクタを作成する
- 別の既存のセカンダリコンストラクタからセカンダリコンストラクタを呼び出す
- 親クラスから 2 次コンストラクターを子クラスの 2 次コンストラクターから呼び出す
コンストラクターは、オブジェクトがオブジェクト指向のプログラミング言語で作成されるときに自動的に呼び出されるメンバー関数です。
Kotlin は OOPS 言語であるため、オブジェクトの初期化にもコンストラクターを使用します。Kotlin には、プライマリコンストラクタとセカンダリコンストラクタの 2つのコンストラクタがあります。
この記事では、Kotlin のセカンダリコンストラクターの概念とその使用方法を紹介します。
コトリンの二次建設業者の歴史
二次コンストラクターは 2015 年まで Kotlin でサポートされていませんでした。それまで、開発者はブロー手法の 1つを使用して、二次コンストラクターのほとんどのユースケースを解決しました。
- クラスの隣にファクトリメソッドを定義します。
- パラメータのデフォルト値を定義します。
- 別のオブジェクトで定義されたファクトリメソッドを使用します。
これらの手法は十分に優れていましたが、二次コンストラクターが必要でした。Kotlin は、2015 年の M11 の発売により、セカンダリコンストラクターのサポートを開始しました。
Kotlin セカンダリコンストラクタ
一次コンストラクターはクラスを初期化するための簡潔な方法を提供しますが、二次コンストラクターはそれらを拡張するときに必要になります。さらに、セカンダリコンストラクターでは初期化ロジックを追加することもできます。
プログラムに含めることができるプライマリコンストラクタは 1つだけですが、Kotlin では複数のセカンダリコンストラクタを作成できます。
Kotlin で constructor
キーワードを使用してセカンダリコンストラクターを作成して使用できます。Kotlin プログラムには、1つまたは複数のセカンダリコンストラクターを含めることができます。
セカンダリコンストラクタは一般的に回避されますが、クラスを拡張するために使用されます。その理由は、複数のコンストラクターを介して複数の方法で単一のクラスを初期化するのに役立つためです。
構文:
class ABC {
constructor(data: String) {
// code
}
二次コンストラクターをよりよく理解するために、次の例を見てみましょう。2つの整数の積を出力するクラス Product
のセカンダリコンストラクターを作成します。
サンプルコード:
fun main(args: Array<String>) {
Product(3, 7)
}
class Product {
//Creating a secondary constructor
constructor(x: Int, y:Int){
var i = x * y
println("The product of integers 3 and 7 is: ${i}")
}
}
出力:
Kotlin で複数のセカンダリコンストラクタを作成する
Kotlin には複数のコンストラクターを含めることもできます。コンパイラが呼び出す多くのコンストラクタのどれが、渡された引数に基づいて決定されます。
サンプルコード:
fun main(args: Array<String>) {
Student(11035, "David")
Student(11047,"Steve","New York")
}
class Student {
constructor (std_id : Int, std_name: String ) {
var id: Int = std_id
var name: String = std_name
print("Student's ID is: $id, ")
println("Student's Name is: $name")
println()
}
constructor (std_id : Int, std_name: String, std_city: String) {
var id: Int = std_id
var name: String = std_name
var city: String = std_city
print("Student's ID is: $id, ")
print("Student's Name is: $name, ")
println("Student's City is: $city")
}
}
出力:
別の既存のセカンダリコンストラクタからセカンダリコンストラクタを呼び出す
既存のセカンダリコンストラクタを使用して、Kotlin でセカンダリコンストラクタを呼び出すことができます。this()
関数を使用する必要があります。
サンプルコード:
fun main(args: Array<String>){
Product(3,7)
}
class Product {
// using this to call another secondary constructor
constructor(x: Int,y:Int) : this(x,y,5) {
var ProductOfTwo = x * y
println("The product of the two integers is: $ProductOfTwo")
}
constructor(x: Int, y: Int,z: Int) {
var ProductOfThree = x * y * z
println("The product of the three integers is is: $ProductOfThree")
}
}
出力:
親クラスから 2 次コンストラクターを子クラスの 2 次コンストラクターから呼び出す
別のコンストラクターからセカンダリコンストラクターを呼び出すだけでなく、子クラスのコンストラクターから親クラスのセカンダリコンストラクターを呼び出すこともできます。継承に似ています。
コンストラクターを継承するには、super
キーワードを使用する必要があります。
サンプルコード:
fun main(args: Array<String>) {
childClass(11035, "David")
}
open class parentClass {
constructor (std_id : Int, std_name: String, std_city: String) {
var id: Int = std_id
var name: String = std_name
var city: String = std_city
print("Student's ID is: $id, ")
print("Student's Name is: $name, ")
println("Student's City is: $city")
println()
}
}
class childClass : parentClass {
constructor (std_id : Int, std_name: String):super(std_id,std_name,"New York"){
var id: Int = std_id
var name: String = std_name
print("Student's ID is: $id, ")
println("Student's Name is: $name")
}
}
出力:
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