Kotlin에서 companion object는 클래스 내부에 정의될 수 있는 객체 선언으로, 이를 통해 그 클래스의 static 멤버와 유사한 기능을 구현할 수 있습니다. Java와는 달리 Kotlin에는 static 키워드가 없으며, 대신 companion object를 사용하여 클래스 레벨의 변수나 메소드를 만들 수 있습니다. 이러한 특성은 Kotlin에서 클래스 인스턴스 없이도 클래스 이름을 통해 직접 접근할 수 있도록 해 줍니다.
Companion Object의 특징:
- 클래스 내부 객체: companion object는 클래스 내부에 위치하며, 해당 클래스의 모든 인스턴스가 공유하는 객체입니다.
- 정적 멤버 접근: companion object 내부에 정의된 속성이나 함수는 클래스 이름을 통해 접근할 수 있습니다. 이는 Java의 static 멤버와 유사한 방식입니다.
- 단일 인스턴스: 클래스당 하나의 companion object가 생성되며, 이는 싱글톤 패턴의 일종으로 볼 수 있습니다.
- 대체 가능한 이름: 기본적으로 companion object는 Companion이라는 이름을 갖지만, 필요에 따라 다른 이름으로 대체할 수 있습니다.
- 인터페이스 구현 가능: companion object는 인터페이스를 구현할 수 있으며, 이를 이용해 다양한 디자인 패턴을 구현할 수 있습니다.
사용 예시:
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
위 예시에서, MyClass는 Factory라는 이름의 companion object를 갖습니다. 이 내부에 정의된 create 함수는 MyClass의 인스턴스를 반환합니다. 함수는 클래스 인스턴스 없이 MyClass.create()와 같은 방식으로 호출될 수 있습니다.
정리:
Kotlin의 companion object는 클래스 내에 정의되는 객체 선언으로, 클래스 자체와 관련된 정적 멤버(속성, 함수)를 생성할 때 사용됩니다. 이를 통해 클래스 레벨에서 직접 접근이 가능한 속성이나 함수를 정의할 수 있어, 인스턴스 생성 없이 사용할 수 있는 유틸리티 함수 또는 싱글톤 패턴 구현 등에 유용하게 활용됩니다.
반응형
'Android > Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin에서 class와 object의 차이점 및 활용 방안: 싱글톤 패턴과 유연성 비교 (0) | 2024.05.28 |
---|---|
[Kotlin] Kotlin에서의 지연 초기화: lateinit 키워드 이해하기 (0) | 2024.04.30 |
[Kotlin,Java] 코틀린과 자바에서 MutableList 선언 및 조작의 차이점 탐구 (2) | 2024.04.23 |
[Kotlin,Java] 자바와 코틀린에서의 프로퍼티 선언 방식의 차이점 설명 (3) | 2024.04.21 |
[Kotlin, Java] Kotlin과 Java의 문법적 차이와 각 언어의 특징을 가위, 바위, 보 게임을 예시로 알아보기 (0) | 2024.04.02 |