由于kotlin中所有类和方法默认都是final的,不能直接继承或重写,需要在继承的类或类中要重写的方法之前添加open关键字
open class View {
open fun click() = println("View clicked")
}
class Button: View() {
override fun click() = println("Button clicked")
}
fun main(args: Array<String>) {
val view: View = Button()
view.click()
}
kotlin中所有类都有一个共同的父类: Any(注意这不是java.lang.Object), 这个类只有equals(), hashCode(), toString()方法。
kotlin与java一样,只能单继承,但可以实现多个接口。
扩展函数是静态加载的,与类或实例无关。
fun View.showOff() = println("I'm a view!") fun Button.showOff() = println("I'm a button!")
val view: View = Button()
view.showOff() //结果是 I'm a view!