var <propertyName>[: <PropertyType>] [= <property_initializer>] [<getter>] [<setter>]var stringRepresentation: String get() = this.toString() set(value) { setDataFromString(value) // parses the string and assigns values to other properties }
Backing Field
// Incorrect: Causes StackOverflowErrorvar counter: Int = 0 set(value) { if (value >= 0) { counter = value // Recursive call to setter! } } var counter = 0 // Initializer writes to the backing field set(value) { if (value >= 0) { field = value // Correct: Accesses the backing field directly } }