kotlin은 java와는 다르게 자동으로 getter/setter를 생성해줘서 신경쓸 필요는 없지만, 값을 가지고 오거나 넣는 것 밖에는 하지 못한다.
가지고 올 때 값을 계산해서 가져온다던지, 값을 넣을때 다른 것도 변화 시키고 싶다던지 할 때 get()과 set()이 사용된다.
예제) 스카프의 사이즈(가로*세로)를 구해서 주문을 넣는다고 가정했을 때, 각 주문한 스카프 사이즈와 총 사이즈를 구하기
var totalSize = 0
set(value) {
field = value
order(value)
}
fun main(arg: Array<String>) {
val scarf1 = Scarf(3, 2)
val size1 = scarf1.size
addSize(size1)
val scarf2 = Scarf(5,2)
val size2 = scarf2.size
addSize(size2)
println("total size = $totalSize")
}
data class Scarf(var width: Int, var heigt: Int) {
val size: Int
get() = this.width * this.heigt
}
fun addSize(size: Int){
totalSize += size
}
fun order(size:Int){
println("order size = $size")
}
// print
order size = 6
order size = 16
total size = 16
1. Scarf 데이터 클래스에서 get을 이용해 사이즈를 가져와서 addSize 함수를 불러와 totalSize에 더한다.
2. addSize 함수에서 totalSize의 값을 (재)설정(set)하였기 때문에 totalSize의 set에 있던 order를 불러오게 된다.
3. scarf1의 사이즈 6, scarf2의 사이즈는 10, totalSize 값이 16이기 때문에 마지막 order는 16이 된다.
'개발 공부 > kotlin' 카테고리의 다른 글
kotlin enum class(열거형 클래스) (0) | 2022.07.03 |
---|---|
Kotlin 컬렉션 정렬 sort, sorted, sortedby, sortDescending, sortWith (0) | 2022.07.03 |
Coroutines/코루틴 기초 1 (0) | 2021.09.14 |