[Kotlin] Object & Companion Object

고릴라우캉캉·2025년 2월 17일
0
post-thumbnail

Object vs Companion Object

ObjectCompanion Object 는 다르다.

결론 요약부터 말하자면,

Object는 독립적인 싱글톤 객체를 만들 때 사용되고, Companion Object는 클래스와 연관된 정적 멤버를 구현할 때 주로 사용됩니다

Companion Object의 특이점

그리고 Companion Object 의 재밌는 점이 하나 또 있다.

//companion Object
class Dinner {
    val lunch = "Steak"

    companion object MyCompanionObject {
        val MENU = "Pasta"
        fun getDinner(): String {
            return "Your dinner is ready!"
        }
    }
}

이렇게 Companion Object를 Class 내에서 선언했을 경우,
Dinner.MENU, Dinner.MycompanionObject.MENU 로도 동일한 output 을 얻어낼 수 있다는 것이다.

println(Dinner.MENU)
println(Dinner.MyCompanionObject.MENU)

이렇게 동일한 결과가 나타나게 된다.

Kotlin 컴파일러는 companion object의 멤버들에 대해 특별한 처리를 합니다. 이를 통해 클래스 이름만으로도 companion object의 멤버에 직접 접근할 수 있게 됩니다

이런 내용이 명시되어져 있다.

메모리 사용량 비교

둘 사이의 관계

둘 사이를 간단하게 그려보자면 이렇게 그릴 수 있겠네요.

       Kotlin
         |
    +----+----+
    |         |
  Object   Class
    |         |
    |    Companion Object
    |         |
 독립적     클래스에 종속
    |         |
싱글톤 구현  클래스 레벨 멤버
profile
웹개발자 김상훈입니다.

0개의 댓글