개발 언어 (Language)/Kotlin
코틀린에서의 속성
Tarake
2024. 7. 31. 16:19
속성(properties)
속성 선언
class Person() {
val name : String
var age : Int
}
코틀린에서 속성은 var 또는 val 키워드로 정의됩니다.
- var : 읽고 쓰기가 가능한 속성
- val : 한 번 선언하면 변경이 불가능한 읽기 전용 속성
게터와 세터
class Rectangle {
var height: Int = 0
var width: Int = 0
val area: Int
get() = height * width // 게터
var perimeter: Int
get() = 2 * (height + width) // 게터
set(value) {
height = value / 4
width = value / 4
} // 세터
}
코틀린은 속성의 값을 읽거나 쓸 때 로직을 정의할 수 있는 게터(getter)와 세터(setter)를 제공합니다.
- 게터: 속성을 읽을 때 사용자 정의 로직을 실행할 수 있습니다.
- 세터: 속성에 값을 설정할 때 사용자 정의 로직을 실행할 수 있습니다.
Backing fields
class User {
var name: String = "Default Name"
get() = field.toUpperCase() // backing field 사용
set(value) {
field = value.trim()
}
}
코틀린에서는 속성을 정의할 때 내부적으로 값을 저장하기 위한 backing field를 자동으로 제공합니다. 그러나 게터와 세터를 사용할 때는 직접 field 식별자를 사용하여 backing field에 접근해야 합니다.
Backing Property
class Temperature {
private var _celsius: Double = 0.0 // backing property
var celsius: Double
get() = _celsius
set(value) {
if (value >= -273.15) { // 절대 영도 이하로 내려갈 수 없음
_celsius = value
}
}
var fahrenheit: Double
get() = _celsius * 9/5 + 32 // 온도를 섭씨에서 화씨로 변환
set(value) {
_celsius = (value - 32) * 5/9
}
}
틀린에서 속성의 값을 저장하기 위한 추가적인 속성을 사용하여 주 속성의 동작을 커스터마이징하거나 특정 로직을 수행할 수 있도록 해주는 개념입니다.
일반적으로 코틀린에서 속성은 해당 속성의 값을 저장하기 위해 자동으로 backing field를 제공합니다. 하지만, 때로는 다음과 같은 이유로 backing field 외에 backing property가 필요할 수 있습니다.
- 속성의 값을 읽거나 쓸 때 추가적인 로직을 실행하고 싶을 때
- 외부에 공개되지 않는 내부적인 값을 관리하고 싶을 때
- 읽기 전용 속성이지만, 내부적으로는 변경이 필요한 경우
출처 :
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
Inheritance | Kotlin
kotlinlang.org