Field with private getter & public setter

I have a lateinit property, that should only be able to be set from the outside but not accessible.

private lateinit var string: String
	public set

Why does the setter have to have a less permissive visibility than the field? Now I have to write it like this, which is kind of ugly:

private lateinit var string: String
fun setString(string: String) {
	this.string = string
}