【发布时间】:2019-05-07 16:34:42
【问题描述】:
我正在尝试创建一个接口,该接口强制其派生类具有特定属性,但只能使用公共 getter。由于我不想允许从其私有范围之外进行更改,因此我不希望它实现公共集。
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*/
}
【问题讨论】:
-
您可以将属性定义为 val,在您的情况下是否足够?
-
不,遗憾的是没有,因为我仍然需要能够私下更改派生类中的值。
-
您可以在实现时将属性设为
var。 -
在界面中将其实现为
val是正确的方法。派生类可以有私有的支持var字段,并通过接口 getter 公开该值。 -
所以与其他类的接口只是为了读取值,我会为它定义一个函数,并留给实现它的类来决定如何提供它。
标签: kotlin interface properties scope set