接口中属性
可以在接口中定义属性。定义在接口中的属性可以是抽象的或是提供一个访问器实现。接口中的属性不能有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"