코틀린에서 프로퍼티(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 |