Android/안드로이드 스터디(Kotlin)
Kotlin] 24. 동반자 객체(Companion Object)
김마리님
2020. 12. 10. 11:20
동반자 객체는 클래스 안에 이름이 없는 객체이다. 이 객체는 인스턴스가 몇 개이던 간에 모든 인스턴스가 공유한다. 코틀린은 static이 없기 때문에 동반자 객체가 static과 유사한 작동을 한다.
예시를 보자.
package companionObject
class Person private constructor(){
companion object{
fun create() : Person {
countCreated += 1
return Person()
}
var countCreated = 0
private set
}
}
fun main() {
val a = Person.create()
val b = Person.create()
println(Person.countCreated)
}
Person은 싱글톤이 아니므로,
val a와 val b는 다른 인스턴스로 만들어진다. 그러므로, 결과가 1이 나와야 한다.
그러나 countCreated가 동반자 객체 속에 들어있기 때문에 val a의 인스턴스와 val b의 인스턴스가 공유된다.
결과 :
2
반응형