Возможно, вы захотите посмотреть геттеры и сеттеры в справочнике kotlin.
Там вы можете увидеть, как сеттер / геттер можно переопределить или изменить в зависимости от видимости, например:
// public var with private setter:
var demo : String = ""
private set
Теперь, что касается вашего конкретного случая, когда вы хотите иметь открытый сеттер, но защищенный геттер, вы можете подумать, что будет работать следующее:
private var demo : String = ""
public set
Но это не работает.Котлин потом жалуется Setter visibility must be the same or less permissive than property visibility
.Итак: использование стандартного Kotlin означает, что это невозможно.Конечно, вы можете просто использовать любой другой метод, который будет общедоступным, и просто установить соответствующее свойство, например:
private var demo : String = ""
fun overwriteDemo(s : String) {
demo = s
}