Kotlin接口属性:仅要求公共获取者,而无需公共设置者

Mat*_*her 2 scope properties interface set kotlin

我试图创建一个接口,以强制其派生类具有一定的属性,但只能使用公共获取程序。由于我不想在其私有范围之外进行更改,因此我不希望它实现公共集。

interface Transaction{
   var transferDate: Date get //I only require a get, no set
}

class MoneyTransaction(){
   override var transferDate: Date get private set 
/*private set does not work*/
}
Run Code Online (Sandbox Code Playgroud)

tyn*_*ynn 5

属性是某些数据的访问器。您将拥有一个吸气剂,并且如果该属性是可变的,那么它也会是一个setter。因此,您可以val使用var属性覆盖任何已声明的属性:

interface Transaction {
   val transferDate: Date
}

class MoneyTransaction: Transaction {
   override lateinit var transferDate: Date
       private set 
}
Run Code Online (Sandbox Code Playgroud)

请注意,lateinit var如果使用对象初始化属性,则无需将其设置为a 。我只是添加了它,以使您的示例正确编译。