동반자 객체는 클래스 안에 이름이 없는 객체이다. 이 객체는 인스턴스가 몇 개이던 간에 모든 인스턴스가 공유한다. 코틀린은 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
반응형
'Android > 안드로이드 스터디(Kotlin)' 카테고리의 다른 글
Kotlin] 26. const (0) | 2020.12.10 |
---|---|
Kotlin] 25. inline 함수 (0) | 2020.12.10 |
Kotlin] 23. 객체 선언(Singleton) (0) | 2020.12.10 |
Kotlin] 22. 확장 (0) | 2020.12.10 |
Kotlin] 21. 다운캐스팅 (0) | 2020.12.09 |