Kotlin/포스팅

코틀린 커스텀 접근자

짜집퍼박사(짜박) 2023. 12. 30. 22:10

코틀린에서는 프로퍼티의 접근자(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