240520_디모의 코틀린 강의 #16강. 오브젝트

2024. 5. 20. 21:44TIL(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++
	}
}