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

 

 

 

 

반응형