Kotlin使用技巧

Kotlin的构造方法分为主构造方法(primary)和次构造方法(secondary),主构造方法定义在类名之后,次构造方法定义在类体内部,主次构造方法可以同时出现也可以单独出现。

主构造方法如下:

class Person constructor(firstName: String) { ... }

constructor可省略:

class Person(firstName: String) { ... }

次构造方法不可省略constructor,如下:

class Person {

    constructor(parent: Person) {

        parent.children.add(this)

    }

}


从内部类调用外部类的成员请使用super@Class,如下:

class Bar : Foo() {

    override fun f() { /* ... */ }

    override val x: Int get() = 0


    inner class Baz {

        fun g() {

            super@Bar.f() // Calls Foo's implementation of f()

            println(super@Bar.x) // Uses Foo's implementation of x's getter

        }

    }

}

多继承情况下的超类成员调用请使用super<Parent>,如下:

open class A {

    open fun f() { print("A") }

    fun a() { print("a") }

}

interface B {

    fun f() { print("B") } // interface members are 'open' by default

    fun b() { print("b") }

}

class C() : A(), B {

    // The compiler requires f() to be overridden:

    override fun f() {

        super<A>.f() // call to A.f()

        super<B>.f() // call to B.f()

    }

}


非抽象方法可以在衍生类中被override为抽象方法,如下:

open class Base {

    open fun f() {}

}

abstract class Derived : Base() {

    override abstract fun f()

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容