코틀린에서는 프로퍼티의 접근자(accessor)를 커스터마이징하여 특정 동작을 수행하도록 할 수 있습니다. 프로퍼티의 접근자에는 Getter와 Setter가 있으며, 이를 커스터마이징하여 원하는 동작을 추가하거나 변경할 수 있습니다.
커스텀 Getter와 Setter
class Person {
// 커스텀 Getter와 Setter
var age: Int = 0
get() {
println("Getting age value")
return field
}
set(value) {
println("Setting age value to $value")
field = value
}
}
fun main() {
val person = Person()
// Getter 호출
println("Age: ${person.age}")
// Setter 호출
person.age = 25
}
위의 코드에서 age 프로퍼티는 커스텀 Getter와 Setter를 가지고 있습니다. Getter에서는 값을 얻을 때 추가적인 동작을 수행하고, Setter에서는 값을 설정할 때 추가적인 동작을 수행합니다.
커스텀 Getter만 사용
class Circle {
// 반지름 값이 음수가 되지 않도록 하는 커스텀 Getter
var radius: Double = 0.0
get() {
return if (field < 0) 0.0 else field
}
}
fun main() {
val circle = Circle()
// Setter를 통해 값을 설정
circle.radius = -5.0
// Getter를 통해 값을 얻음 (실제로는 0.0이 됨)
println("Radius: ${circle.radius}")
}
위의 코드에서 radius 프로퍼티는 커스텀 Getter만 가지고 있습니다. Getter에서는 값이 음수가 되지 않도록 보정하는 동작을 수행하고 있습니다.
커스텀 Setter만 사용
class Temperature {
// 섭씨 값을 화씨 값으로 변환하여 저장하는 커스텀 Setter
var celsius: Double = 0.0
set(value) {
field = (value * 9 / 5) + 32
}
}
fun main() {
val temperature = Temperature()
// Setter를 통해 값을 설정 (실제로는 화씨 값으로 변환되어 저장됨)
temperature.celsius = 20.0
// Getter를 통해 값을 얻음 (실제로는 68.0이 됨)
println("Celsius: ${temperature.celsius}")
}
위의 코드에서 celsius 프로퍼티는 커스텀 Setter만 가지고 있습니다. Setter에서는 섭씨 값을 화씨 값으로 변환하여 저장하고 있습니다.
커스텀 접근자를 사용하면 프로퍼티의 동작을 더욱 세밀하게 제어할 수 있습니다. 이는 값의 유효성을 검사하거나 값의 변환을 수행하는 등의 다양한 상황에서 유용하게 활용될 수 있습니다.
With ChatGPT
'Kotlin > 포스팅' 카테고리의 다른 글
코틀린 객체 (0) | 2023.12.30 |
---|---|
코틀린 지연 계산 프로퍼티와 위임 (0) | 2023.12.30 |
코틀린 늦은 초기화 (0) | 2023.12.30 |
코틀린 최상위 프로퍼티 (0) | 2023.12.30 |
코틀린 프로퍼티 (0) | 2023.12.30 |