본문 바로가기
개발/kotlin

[Kotlin] companion object 정리

by 1인용 놀이터 2025. 6. 16.
728x90
반응형

companion obejct

java의 static과 같은 문법으로 "클랙스 안의 정적 멤버"를 만들 때 사용한다.

kotlin에서는 java의 static 대신 companion object를 사용하는 것이다.

즉, 객체를 만들지 않고도 사용할 수 있는 변수나 메서드를 만들 수 있다는 것이다.

 

간단한 예제 

class MyClass {
    companion object {
        fun sayHello() {
            println("안녕!")
        }
    }
}

 

위 예제에서 companion obejct로 선언 된 함수 호출은

아래와 같이 사용할 수 있다.

 

MyClass.sayHello()  // 결과: 안녕!

 

 

comapnoin object 사용되는 경우

상황 예시
클래스 외부에서 바로 호출하고 싶을 때 CalendarFragment.newInstance(2025, 6)
상수를 만들 때 const vala TAG = "MyLog"
객체를 하나만 만들고 싶은 때(싱글턴) object 와 함께 사용

 

 

companoin object VS static

항목 static companion object
목적 클래스에 속한 정적 멤버 만들기 클래스에 속한 정적 멤버처럼 사용
키워드 static companion object
접근방식 ClassName.memberName ClassName.memberName
인스턴스 없이 사용가능 여부 
클래스당 하나만 존재 ✅(하나의 companion object만 가질 수 있다.
상수 선언 public static final int MAX = 100 const val MAX = 100 (top-level or companion)
함수 선언 public static void print() fun print() inside companion object
내부 객체 생성 가능 여부 ❌ (static은 정적 공간) ✅ (companion object는 내부 객체임)
바이트 코드 변환 시 진짜 static 함수로 변환됨 내부 static class + INSTANCE로 변환됨
기타 특징 간단하고 빠름 더 객체지향적이고 유연함

 

 

 

728x90
반응형