こんにちは😀
今回は、クラスの応用として、コンパニオン・オブジェクトというをみていきます。
コンパニオン・オブジェクトとは、クラスに1つだけ作るオブジェクトです。
このオブジェクトは、「クラス名・オブジェクト名」でアクセスすることができます。
以下の処理で書いてみました。
3〜6行目がそれにあたります。
8行目の「getOutput()」関数は、結果を出力するための関数です。
class Month constructor(val month:String,val kisetsu:String){
companion object Factory {
fun show(month:String,kisetsu:String)= Month(month,kisetsu)
}
fun getOutput():String =”${month}月は、${kisetsu}の季節だ。”
}
main関数を書いてみます。
「Month.Factory.show(引数)」でコンパニオン・オブジェクトを呼び出しています。
fun main(args: Array<String>) {
val hitA = Month.Factory.show(“6″,”梅雨”)
val hitB = Month.Factory.show(“8″,”花火”)
val hitC = Month.Factory.show(“12″,”クリスマス”)
println(hitA.getOutput())
println(hitB.getOutput())
println(hitC.getOutput())
}
実行します。
月に対応した文字列が出力されています。
またオブジェクト名を省略しても書くことができます。
上記のオブジェクトでいえば、以下のように「Factory」を省略できます。
companion object {
fun show(month:String,kisetsu:String)= Month(month,kisetsu)
}
オブジェクト名が省略できるので、以下のように定義も簡略化できます。
val hitA = Month.show(“6″,”梅雨”)
val hitB = Month.show(“8″,”花火”)
val hitC = Month.show(“12″,”クリスマス”)
当然、実行結果は同じになります。
コンパニオン・オブジェクトも今回初めて書いてみましたが、クラスの初期化を必要とせず、オブジェクトの呼び出しが簡単にできますね。
今回はここまで🤚
では、また次回。