속성 (getter, setter)
값을 읽어오는 것을 getter, 값을 설정해주는 것을 setter라고 한다.
기본적으로 코틀린에서는 프로퍼티를 생성하면 val, var에 따라서 자동으로 getter 또는 setter를 작성해준다. (직접 정의할 수도 있다.)
- val
- getter만 생성된다. -> val은 값을 할당할 수 없기 떄문이다.
- var
- getter, setter 모두 생성된다.
getter 정의해보기
class Person() {
val name: String = "Kim"
get(){ //get() = field로 생략 가능
return field
}
var age: Int = 24
get(){ //get() = field로 생략 가능
return field
}
val isAdult: Boolean
get(){
return age >= 18
}
fun getName() = println("Your name is ${this.name}")
}
fun main() {
val p = Person()
println("${p.age}, ${p.isAdult }") //24, true
}
❓ field는 뭔가?
코틀린에서 field는 프로퍼티의 실제 값을 저장하는 백킹 필드(backing field)를 의미한다. 즉, field는 프로퍼티의 값이 저장되는 실제 저장소입니다.
따라서, getter를 정의할 때는 프로퍼티 이름을 반환하는 것이 아니라 프로퍼티의 값이 저장되어 있는 field를 반환한다.
setter 정의해보기
class Person() {
val name: String = "Kim"
get(){ //get() = field로 생략 가능
return field
}
var age: Int = 0
get(){ //get() = field로 생략 가능
return field
}
set(value) {
if (value >=0){
field = value
}
}
val isAdult: Boolean
get(){
return age >= 18
}
fun getName() = println("Your name is ${this.name}")
}
fun main() {
val p = Person()
p.age = -1
println("${p.age}") //0
}
❓ value는 뭔가?
value는 프로퍼티에 할당하려는 값을 나타낸다. 즉, 프로퍼티의 값을 변경할 때 setter함수가 호출되며, 이때 새로 설정하려는 값이 value이다.
'2학년 2학기 > 모바일 소프트웨어 - 코틀린' 카테고리의 다른 글
Class(1) - 추상 클래스와 인터페이스 (0) | 2024.10.01 |
---|---|
Class(1) - 상속 (0) | 2024.10.01 |
Class(1) - 클래스 선언과 생성자 (0) | 2024.09.30 |
Kotlin_Basic03 - when(2) (0) | 2024.09.20 |
Kotlin_Basic03 - when(1) (0) | 2024.09.20 |