Getter & Setter가 없다?

코틀린에서는 기본적으로 프로퍼티를 사용하여 필드를 정의하고, 이 프로퍼티에 대한 getter와 setter를 자동으로 생성합니다.

따라서, 별도로 getter를 정의하지 않고도 프로퍼티를 호출하여 값을 가져올 수 있습니다.

예를 들어, 다음과 같이 프로퍼티를 정의할 수 있습니다.

class Person(val name: String, var age: Int)

위의 Person 클래스에서 name은 읽기 전용 프로퍼티(기본적으로 getter만 생성됨)이고, age는 읽기/쓰기 가능한 프로퍼티(기본적으로 getter와 setter가 생성됨)입니다.

이 프로퍼티들은 다음과 같이 사용할 수 있습니다

val person = Person("Alice", 30)
println(person.name) // getter 호출, 출력: Alice
println(person.age)  // getter 호출, 출력: 30

person.age = 31     // setter 호출
println(person.age) // 출력: 31

따라서 코틀린에서는 프로퍼티를 통해 필드에 접근할 수 있으며, getter와 setter를 명시적으로 정의하지 않아도 기본적으로 제공됩니다.

커스텀 Getter & Setter

필요에 따라 커스텀 getter와 setter를 정의할 수도 있습니다.

class Person(var age: Int) {
    var isAdult: Boolean
        get() = age >= 18
        set(value) {
            age = if (value) 18 else 0
        }
}

isAdult 프로퍼티는 커스텀 getter와 setter를 가지고 있습니다.