¿Cuál es la forma correcta de agregar un getter privado abstracto y un setter público?

Tengo una interfaz donde quiero una propiedad que se puede modificar dentro de la class, pero no en el exterior. No puedo usar val porque debe ser mutable y la palabra key var no puede tener un setter privado especificado, ya que está en una interfaz.

En Java, hubiera hecho esto:

public <T> getMyProperty(); 

Puedo usar el mismo enfoque en kotlin y simplemente escribir la function getter dirrectly, pero esto no parece un enfoque tipo kotlin. ¿Hay una mejor manera de lograr lo mismo que esto? diversión getMyProperty ()

En Kotlin, puedes override un valor val con una var , así que, creo, lo que quieres se puede express de la siguiente manera:

 interface Iface { val foo: Foo } 

 class Impl : Iface { override var foo: Foo get() = TODO() private set(value) { TODO() } } 

O puede anular el val con una propiedad con un campo de respaldo y accesadores pnetworkingeterminados:

 class ImplDefaultGetter : Iface { override var foo: Foo = someFoo private set } 

En ambos casos, la mutabilidad y la presencia de un setter privado se convierten en un detalle de implementación de las classs y no se exponen a través de la interfaz.