반응형
getter & setter
- 주 생성자(괄호 안에 있는 property) : val과 var를 이용해 해당 프로퍼티의 접근 제어를 설정하여 자동으로 getter와 setter를 생성함
class Person(val name : String, var age : Int){}
val name: String : 읽기 전용 property, getter가 자동으로 생성된다.
var age: Int: 읽기 및 쓰기가 가능한 property, getter & setter가 자동으로 생성된다.
fun main(){
var p = Person("a",20)
println("${p.name} : ${p.age}세") // a : 20세
p.name = "b" //Error!!
p.age = 21
}
위와 같이 class에서 var로 선언된 age는 값을 읽거나 변경하는 것이 가능하지만
val로 선언된 name은 읽는 것은 가능하지만 값을 변경하려하면 Error가 뜬다.
커스텀 getter & setter
class Person(val firstName: String, val lastName: String, _age: Int) {
val name: String
get() {
return "$firstName $lastName"
}
var age: Int = _age
get() = field
set(value) {
if (value >= 0) {
field = value // field = age
}
}
}
val name
- val로 선언되었기 때문에 setter는 생성되지 않는다.
get(): 중괄호 안에 연산을 넣어 커스텀 할 수 있다.
var age
- var로 선언되었기 때문에 getter, setter 모두 생성된다.
get() : name에서의 get과 같이 커스텀 하거나 위와 같이 고정적인 값(field)을 반환할 수 있다.set(value){}: 중괄호 안에 연산을 넣어 커스텀 할 수 있다.
* field : 내부 저장 변수로 이 코드에서는 age를 뜻한다.
*커스텀 하지 않는 get,set은 생략하여도 무방하다.(자동으로 생성됨)
마무리하며
이 글 작성한지 n시간 째..
클래스를 어느정도 공부하고 정리해보려고 했는데 내용이 너무 많아서 차근차근 올리기로 결심해따..
이해는 했는데 글로 정리하려니까 어떻게 써야할지..
키야악
반응형
'학습 기록 > kotlin' 카테고리의 다른 글
| [Kotlin] groupBy, groupingBy (0) | 2025.12.03 |
|---|---|
| [Kotlin] 플랫폼 타입(Platform type) (0) | 2025.10.20 |
| [Kotlin] Collection(List, Set, Map) (1) | 2024.10.27 |
| [Kotlin] 반복문(while, for) (1) | 2024.10.20 |
| [Kotlin] String에 쓰이는 함수들 (1) | 2024.10.19 |
