Skip to main content

Properties

Class의 Property는 필드와 접근자를 통칭하는 말입니다.

필드는 데이터를 저장하는 변수를 의미하며, 접근자는 해당 필드에 접근하여 값을 조회하거나 수정하는 getter, setter를 의미합니다.

코틀린에서 프로퍼티는 var, val키워드를 사용하여 mutable한지, read-only인지를 정해줄 수 있습니다.

val 키워드를 사용하면 해당 프로퍼티는 read-only이며, 따라서 setter를 사용할 수 없습니다.

class Address {
var name: String = "Holmes, Sherlock"
var street: String = "Baker"
var city: String = "London"
var state: String? = null
var zip: String = "123456"
}

프로퍼티에 접근하거나 사용하려면 간단하게 이름으로 ‘.’과 함께 접근하여 사용할 수 있습니다.

fun copyAddress(address: Address): Address {
val result = Address() // there's no 'new' keyword in Kotlin
result.name = address.name // accessors are called
result.street = address.street
// ...
return result
}

Getters and Setters

앞서 설명하였듯이 val 키워드로 선언을한 프로퍼티는 setter를 사용할 수 없습니다.

getter와 setter를 커스텀하여 사용이 가능하며 방법은 아래와 같습니다.

class Rectangle(val width: Int, val height: Int) {
val area: Int // property type is optional since it can be inferred from the getter's return type
get() = this.width * this.height

var stringRepresentation: String
get() = this.toString()
set(value) {
setDataFromString(value) // parses the string and assigns values to other properties
}
}

Late-initialized properties and variables