🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## super * [引用一个方法或属性的超类实现](http://www.kotlincn.net/docs/reference/classes.html#调用超类实现) * [在次构造函数中调用超类构造函数](http://www.kotlincn.net/docs/reference/classes.html#继承) ### 调用超类实现 派生类中的代码可以使用*super*关键字调用其超类的函数与属性访问器的实现: ``` open class Foo { open fun f() { println("Foo.f()") } open val x: Int get() = 1 } class Bar : Foo() { override fun f() { super.f() println("Bar.f()") } override val x: Int get() = super.x + 1 } ``` 在一个内部类中访问外部类的超类,可以通过由外部类名限定的*super*关键字来实现:`super@Outer`: ``` class Bar : Foo() { override fun f() { /* …… */ } override val x: Int get() = 0 inner class Baz { fun g() { super@Bar.f() // 调用 Foo 实现的 f() println(super@Bar.x) // 使用 Foo 实现的 x 的 getter } } } ``` ### 示例 ~~~ fun main(args: Array<String>) { val son = Son("Harry") son.love() } open class Father { open val firstName = "Chen" open val lastName = "Jason" fun ff() { println("FFF") } } class Son : Father { override var firstName = super.firstName override var lastName = "Jack" constructor(lastName: String) { this.lastName = lastName } fun love() { super.ff() // 调用父类方法 println(super.firstName + " " + super.lastName + " Love " + this.firstName + " " + this.lastName) } } ~~~ 运行结果 ``` FFF Chen Jason Love Chen Harry ```