メソッドとプロパティのオーバーライドは、こんな感じだ。
open class hoge {
open var hoge1 = ""
init {
println("Init hoge")
}
open fun hoge() {
println("hoge.hoge()")
}
}
class hoge2:hoge() {
override var hoge1: String
get() = super.hoge1
set(value) {
println("set hoge2.hoge1")
super.hoge1 = value
}
init {
println("Init hoge2")
}
override fun hoge() {
super.hoge()
println("hoge2.hoge()")
}
}
クラスの継承と一緒でメソッドやプロパティをオーバーライドするには、親クラスでopenをつけて宣言されていないといけない。
継承した方のクラスでoverrideを頭に付けて宣言する。
オーバーライドしたメソッド内で親クラスのメソッドを呼ぶにはsuperを使用する。
コメント