240520_디모의 코틀린 강의 #16강. 오브젝트
2024. 5. 20. 21:44ㆍTIL(Today I Learned)
유튜브 - 디모의 코틀린 문법 강의 정리
#16강. 오브젝트
1. 오브젝트: 단 하나의 객체만으로 공통적인 속성이나 함수를 사용해야 하는 코드에서 별도의 클래스 없이 object로 대체할 때 사용(인스턴스 생성 X)
fun main(){
println(Counter.count)
Counter.countUp()
Counter.countUp()
println(Counter.count)
Counter.clear()
println(Counter.count) // 0 2 0 출력
}
// object는 최초 사용 시 자동 생성, 이후에는 코드 전체에서 공통으로 사용
// -> 종료 전까지 공통으로 사용할 내용들을 묶어서 만드는 것이 좋음
object Counter {
var count = 0
fun countUp(){
count++
}
fun clear(){
count = 0
}
2. Companion Object: 클래스의 인스턴스 기능은 그대로 사용하면서, 인스턴스 간에 공용으로 사용할 속성/함수는 별도로 생성
fun main(){
var a = FoodPoll("짜장")
var b = FoodPoll("짬뽕")
a.vote()
a.vote()
b.vote()
b.vote()
b.vote()
println("${a.name} : ${a.count}") // 짜장 : 2
println("${b.name} : ${b.count}") // 짬뽕 : 3
println("총계: ${FoodPoll.total}") // 총계 : 5
// 서로 다른 인스턴스라도 companion object 안에 total을 공유하여 모든 인스턴스에서 투표수를 누적 카운팅할 수 있음
}
class FoodPoll(val name: String){
companion object{
val total = 0 // 총 투표수 집계
}
var count = 0
fun vote(){
total++
count++
}
}
'TIL(Today I Learned)' 카테고리의 다른 글
240522_디모의 코틀린 강의 #18강. 클래스의 다형성 (0) | 2024.05.22 |
---|---|
240521_디모의 코틀린 강의 #17강. 익명객체와 옵저버 패턴 (0) | 2024.05.20 |
240517_디모의 코틀린 강의 #15. 스코프 함수 (0) | 2024.05.20 |
240516_디모의 코틀린 강의 #14. 고차함수와 람다함수 (0) | 2024.05.20 |
240515_디모의 코틀린 강의 #13강. 변수/함수/클래스의 접근범위와 접근제한자 (0) | 2024.05.14 |