References: Do it! 코틀린 프로그래밍

코틀린에서의 컴패니언 객체에 대해 알아봅니다.

 

 

1. 컴패니언(companion)

 

코틀린은 static 키워드가 없는 대신 companion객체를 제공합니다.

 

컴패니언 객체는 프로그램 실행 시 독립적인 메모리 공간을 할당받습니다.

따로 인스턴스화 할 필요가 없으며 어떤 객체라도 동일한 참조 값을 갖고 있어 해당 클래스의 상태에 관계없이 접근할 수 있습니다.

따라서 모든 객체에 의해 공유되는 효과를 갖습니다.

 

다음 예시를 통해 컴패니언 객체를 사용하는 방법에 대해 알아봅시다

 

class Person{
    var id: Int = 0
    var name: String = "smoh"
    companion object {
        var language: String = "Korean"
        fun work(){ println("working ...") }
    }
}
fun main() {
    println(Person.language)
    Person.language = "English"
    println(Person.language)
    Person.work()
    //println(Person.name)
}

 

  • companion object : 컴패니언 객체를 선언합니다. 해당 객체의 내부에 선언된 내용은 프로그램 시작 시 초기화되어 바로 사용할 수 있습니다.
  • //println(Person.name) : 컴패니언 객체 외부의 프로퍼티를 사용하기 위해선 초기화가 먼저 필요합니다.

위 코드를 실행하면 다음과 같은 결과를 확인할 수 있습니다

 

컴패니언 객체는 주로 실제 객체의 싱글톤(Singleton)으로 정의됩니다.

이는 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며 생성된 객체를 어디서든 참조하도록 하기 위함입니다.

이와 같이 하면 객체가 동일한 정보를 가질 때 하나의 메모리만 유지해 메모리를 절약할 수 있는 장점이 있습니다.

 

 

 

 

 

 

반응형

'Programming' 카테고리의 다른 글

[Kotlin] 31. 인터페이스  (0) 2019.09.12
[Kotlin] 30. 추상 클래스  (0) 2019.09.05
[Kotlin] 28. 위임(Delegation)  (0) 2019.09.01
[Kotlin] 27. 지연 초기화: lazy  (0) 2019.08.27
[Kotlin] 26. 지연초기화: lateinit  (0) 2019.08.27

+ Recent posts