こんにちは😀
今回で、このKotlin入門は最終回とします。
最後は、前回に引き続きEnumクラスをみていきます。
Enumクラスの列挙子に無名クラスを宣言できるので、それをみていきましょう。
無名クラスを宣言
EnumクラスHanabiを作成し、無名クラスを書いてみます。
インターフェースと似たような作りになるので、共通の関数を使えるよう無名クラスの中の関数には「override」を付けます。
enum class Hanabi{
// 無名クラスを宣言
EDOGAWA{
override fun goHanabi()=”江戸川の花火にいきましょう。”
};
}
共通の関数に関しては、以下に書きます。
抽象関数
共通で使用する関数(抽象関数と呼びます)を、17行目にて宣言します。
抽象関数と認識するため「abstract」を付けます。
また、新たに8〜14行目にに無名クラスを列挙子として追加します。
無名クラスを定義した場合、列挙子の終わりは「;」を付けるのに気を付けましょう。
enum class Hanabi{
// 無名クラスを宣言
EDOGAWA{
override fun goHanabi()=”江戸川の花火にいきましょう。”
},
ODAIBA{
override fun goHanabi()=”お台場の花火にいきましょう。”
},
SUMIDAGAWA{
override fun goHanabi()=”隅田川の花火にいきましょう。”
};
// 抽象関数を定義
abstract fun goHanabi():String
}
Enumクラスを呼び出す
main関数です。
無名クラスのオブジェクトの呼び出しは、以下のようになります。
Hanabi.EDOGAWA.goHanabi()
ここでは、for文を使用して全要素を取り出して出力します。
変数evalは、例えば「Hanabi.EDOGAWA」まで取得できるので、「eval.goHanabi()」で値は出力できます。
fun main(args: Array<String>) {
// リストの要素を取り出し、gatHanabi関数の戻り値を出力
for(eval in enumValues<Hanabi>()){
println(eval.goHanabi())
}
}
実行すると以下のようになります。
最後に一言・・・
Enumクラスもクラス自体を列挙できれば、さらに処理の工夫の幅が広がりますね。
さて、ここまで長かったですが、これでKotlinの基本とちょっと応用は終了です。
また気づいたことがあれば検証していきたいと思います。
今回はここまで🤚
では、また次回。