☕ Java

[Kotlin] Companion Object

loose 2024. 2. 2. 10:44
반응형
  • 클래스 없이 정의 할 수 있는 객체다.
  • 싱글톤 역할을 한다.
  • 클래스 내부에 정의하지만 클래스 인스턴스와 별개로 존재한다.
  • 정적으로 접근이 가능하다.(상속 불가능)
  • 공통 메서드인 Util Class를 대체할 수 있다.
  • 공통 상수인 Enum 혹은 static을 관리할 수 있다.
class MyClass {
    companion object {
        fun createInstance(name: String): MyClass {
            // 인스턴스 생성 로직
            return MyClass(name)
        }

        const val VERSION = "1.0.0"
    }

    private val name: String

    constructor(name: String) {
        this.name = name
    }

    fun getName(): String {
        return name
    }
}

// Companion object 사용 예시
val instance = MyClass.createInstance("My Instance")
val version = MyClass.VERSION
println(instance.getName())
println(version)
728x90