본문 바로가기
Android/Kotlin

[Kotlin] Kotlin의 companion object 이해하기

by quessr 2024. 4. 30.

 

Kotlin에서 companion object는 클래스 내부에 정의될 수 있는 객체 선언으로, 이를 통해 그 클래스의 static 멤버와 유사한 기능을 구현할 수 있습니다. Java와는 달리 Kotlin에는 static 키워드가 없으며, 대신 companion object를 사용하여 클래스 레벨의 변수나 메소드를 만들 수 있습니다. 이러한 특성은 Kotlin에서 클래스 인스턴스 없이도 클래스 이름을 통해 직접 접근할 수 있도록 해 줍니다.

 

Companion Object의 특징:

  1. 클래스 내부 객체: companion object 클래스 내부에 위치하며, 해당 클래스의 모든 인스턴스가 공유하는 객체입니다.
  2. 정적 멤버 접근: companion object 내부에 정의된 속성이나 함수는 클래스 이름을 통해 접근할 있습니다. 이는 Java static 멤버와 유사한 방식입니다.
  3. 단일 인스턴스: 클래스당 하나의 companion object 생성되며, 이는 싱글톤 패턴의 일종으로 있습니다.
  4. 대체 가능한 이름: 기본적으로 companion object Companion이라는 이름을 갖지만, 필요에 따라 다른 이름으로 대체할 있습니다.
  5. 인터페이스 구현 가능: companion object 인터페이스를 구현할 있으며, 이를 이용해 다양한 디자인 패턴을 구현할 있습니다.

사용 예시:

class MyClass {
    companion object Factory {
        fun create(): MyClass = MyClass()
    }
}

 

위 예시에서, MyClass는 Factory라는 이름의 companion object를 갖습니다. 이 내부에 정의된 create 함수는 MyClass의 인스턴스를 반환합니다. 함수는 클래스 인스턴스 없이 MyClass.create()와 같은 방식으로 호출될 수 있습니다.

 

정리:

Kotlin companion object 클래스 내에 정의되는 객체 선언으로, 클래스 자체와 관련된 정적 멤버(속성, 함수) 생성할 사용됩니다. 이를 통해 클래스 레벨에서 직접 접근이 가능한 속성이나 함수를 정의할 있어, 인스턴스 생성 없이 사용할 있는 유틸리티 함수 또는 싱글톤 패턴 구현 등에 유용하게 활용됩니다.