こんにちは😀
今回は、インターフェイスを実装した無名のクラスをみてみます。
無名関数という名前を定義しない関数がありましたが、インターフェイスも名前を定義しない無名クラスで実装することができます。
まず書いてみましょう。
前回定義したインターフェイスDriveを使用します。
以下の処理はクラス名を定義していない、無名クラスです。
object:Drive {
override val name = “送迎バス”
override fun getDrive() = “${name}を予約しました。”
override fun goto() = “明日、${name}で大阪にいきます。”
}
上記の処理を使う際には、下記のように変数に渡すことが可能です。
val driving = object:Drive {
・・・・・・省略・・・・・・
}
また以下のようにリストを定義して、直接定義した無名クラスを渡しています。
val travels = mutableListOf<Drive>()
travels.add(object:Drive {
・・・・・省略・・・・・
})
上記のリストに渡している処理でmain関数に書いてみましょう。
3行目は前回作成したインターフェイスDriveを実装したUsingクラスです。9行目にそのクラスを定義した変数をリストに追加しています。
12〜18行目で上記の無名クラスをリストに追加しています。
fun main(args: Array<String>) {
val car = Using(“リムジン”)
// リストを定義する。
val travels = mutableListOf<Drive>()
// carをリストに追加する。
travels.add(car)
// 無名クラスをリストに追加する。
travels.add(object:Drive {
override val name = “送迎バス”
override fun getDrive() = “${name}を予約しました。”
override fun goto() = “明日、${name}で大阪にいきます。”
}
)
// リストの要素を出力する。
for (travel in travels) {
println(travel.getDrive())
println(travel.goto())
}
}
実行すると以下のように出力されます。
無名の形で書くと、main関数などの主要なクラスや関数に処理を書くことができるので、だいぶ処理は短く簡潔にすることができます。
簡単な処理では積極的に使っていきたいものです。
今回はここまで🤚
では、また次回。
コメント