Kotlin/포스팅

코틀린 프로퍼티

짜집퍼박사(짜박) 2023. 12. 30. 20:51

코틀린에서 프로퍼티(Property)는 클래스 멤버로서 클래스의 속성을 나타냅니다. 프로퍼티는 주로 클래스의 필드(Field)와 Getter/Setter 메서드를 대체하는 형태로 사용됩니다. 코틀린에서는 명시적으로 필드를 선언하지 않아도 프로퍼티를 사용할 수 있습니다.

 

기본적인 프로퍼티 선언

class Person {
    // 프로퍼티 선언
    var name: String = "John Doe"
    var age: Int = 30
}

위의 코드에서 Person 클래스는 name과 age라는 두 개의 프로퍼티를 가지고 있습니다.

 

프로퍼티 사용

fun main() {
    val person = Person()
    
    // Getter를 통한 값 읽기
    println("Name: ${person.name}")
    println("Age: ${person.age}")

    // Setter를 통한 값 변경
    person.name = "Jane Doe"
    person.age = 25

    println("Updated Name: ${person.name}")
    println("Updated Age: ${person.age}")
}

프로퍼티는 클래스 외부에서는 필드처럼 접근할 수 있지만, 내부에서는 실제로는 Getter와 Setter 메서드를 통해 접근됩니다.

 

Getter와 Setter의 사용자 정의

class Person {
    // 프로퍼티 선언과 함께 Getter와 Setter의 사용자 정의
    var name: String = "John Doe"
        get() = field.toUpperCase()  // Getter의 사용자 정의
        set(value) {
            field = "Name: $value"  // Setter의 사용자 정의
        }

    var age: Int = 30
        private set  // Setter를 private으로 설정하여 외부에서의 값 변경 제한
}

위의 코드에서 name 프로퍼티의 Getter는 필드 값의 대문자 변환을 수행하고, Setter는 입력된 값에 "Name: "을 추가하여 설정합니다. age 프로퍼티의 Setter는 private으로 설정되어 외부에서의 값 변경이 제한됩니다.

 

프로퍼티의 지연 초기화

class LazyPerson {
    // by lazy를 사용한 지연 초기화
    val name: String by lazy {
        println("Initializing name...")
        "John Doe"
    }
}

by lazy를 사용하면 해당 프로퍼티에 처음 접근될 때 초기화 코드가 실행되며, 그 이후로는 초기화 코드를 다시 실행하지 않습니다.

프로퍼티는 클래스의 상태를 표현하고, Getter와 Setter를 통해 데이터를 읽거나 변경하는 중요한 역할을 수행합니다. 코틀린에서는 간결하면서도 강력한 프로퍼티의 선언과 사용이 가능합니다.

 

With ChatGPT

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 늦은 초기화  (0) 2023.12.30
코틀린 최상위 프로퍼티  (0) 2023.12.30
코틀린 엘비스 연산자  (0) 2023.12.30
코틀린 안전한 호출 연산자  (0) 2023.12.30
코틀린 널 아님 단언 연산자  (0) 2023.12.30