こんにちは😀
今回もクラスの継承をみていきましょう。
まず、関数を再定義するやり方をみてみます。
スーパークラスで定義した関数をサブクラスで再定義します。
前回作成した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())
}
実行すると、サブクラスを介して文字列を出力しています。
今回は継承の応用になりますが、上記の例から幅広く継承が使えることがわかりますね。
今回はここまで🤚
では、また次回。