본문 바로가기
Android/안드로이드 스터디(Kotlin)

Kotlin] 24. 동반자 객체(Companion Object)

by 김마리님 2020. 12. 10.

동반자 객체는 클래스 안에 이름이 없는 객체이다. 이 객체는 인스턴스가 몇 개이던 간에 모든 인스턴스가 공유한다. 코틀린은 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