接口中属性

可以在接口中定义属性。定义在接口中的属性可以是抽象的或是提供一个访问器实现。接口中的属性不能有backing field并且定义在接口中的方法是不能引用它们的。

interface MyInterface {
    val prop: Int
    val propertyWithImplementation: String
        get() = "foo"
        fun foo() {
        print(prop)
    }
}
class Child : MyInterface {
    override val prop: Int = 29
}

如上,抽象属性定义,不能是backing field的形式:

val prop: Int

backing field的定义方式如下:

var counter = 0 // 初始化值是被写在backing field中的
    set(value) {
        if (value >= 0) field = value
    }

如上,接口中的访问实现方式为:

val propertyWithImplementation: String
    get() = "foo"

results matching ""

    No results matching ""