多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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 ```