メソッドとプロパティのオーバーライドは、こんな感じだ。

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を使用する。