サイトアイコン ハジカラ

【Kotlin入門】クラスの継承〜関数再定義とジェネリック型

こんにちは😀

今回もクラスの継承をみていきましょう。
まず、関数を再定義するやり方をみてみます。
スーパークラスで定義した関数をサブクラスで再定義します。

前回作成したPresentクラスを使用しましょう。
givePresent関数をサブクラスで再定義したい場合、関数にも「open」を付ける必要があります。

open class Present(val name:String, val present:String) {

open fun givePresent() = “${name}の誕生日には、${present}をプレゼントしよう。”
}

サブクラスも前回使用したGameクラスを用います。
再定義したいgivePresent関数に「override」を付けます。
givePresent関数に、新たに文字列を定義しています。

class Game(name:String):Present(name,”人生ゲーム”){

override fun givePresent()=”${name}には、${present}が誕生日プレゼントだな。”
}

main関数は、前回と同じにしています。

fun main(args: Array<String>) {

val present = Present(“太郎”,”万年筆”)
val game = Game(“次郎”)

println(present.givePresent())
println(game.givePresent())
}

実行します。
サブクラスGameの出力が再定義された文字列になっています。

次は、ジェネリック型を使用してみます。
ジェネリック型は、自由に型を当てはめられるように「T」を定義します。
引数はサブクラスGameにします。

class Box<T>(val game:Game){

fun open():String = game.givePresent()
}

main関数です。
3行目でPresentのジェネリック型を定義しています。

fun main(args: Array<String>) {

val present = Box<Present>(Game(“三郎”))

println(present.open())
}

実行すると、サブクラスを介して文字列を出力しています。

今回は継承の応用になりますが、上記の例から幅広く継承が使えることがわかりますね。

今回はここまで🤚

では、また次回。

 

【Kotlin入門一覧はこちら】

モバイルバージョンを終了