계발자 블로그

[Kotlin] 코틀린 Companion Object 본문

Kotlin

[Kotlin] 코틀린 Companion Object

더구더구 2023. 3. 1. 22:49

Companion Object란?

companion object는 Java에서 static과 비슷한 개념입니다.

companion object는 클래스 내부에 선언되며, 클래스의 인스턴스가 생성되지 않아도

접근할 수 있는 멤버를 정의할 수 있습니다. 클래스 내부의 한번만 선언할 수 있으며

보통 맨 마지막에 선언해주는 것이 일반적입니다.

 

Java의 상수

자바에서는 위 처럼 static을 사용하여 변하지 않는 데이터를 외부에서 접근할 수 있게 생성해 주었습니다.

 

Kotlin의 companion object

이렇게 사용할 수 있습니다.

kotlin에서 const는 상수를 선언하기 위한 키워드입니다.

const를 사용하면 런타임 시간에 값이 할당되는 val와 달리 컴파일 시간에 할당되는 상수를 선언할 수 있습니다.

 

const는 오직 문자열이나 기본 자료형으로만 할당할 수 있습니다.

const로 선언을 하면 클래스의 프로퍼티나 지역변수로 할당할 수 없게 됩니다.

따라서 일반적으로 companion object 안에 상수로 선언하게 됩니다.

 

const를 붙이지 않은 name은 안드로이드 스튜디오에서 const를 만드는 것을 추천하고 있습니다.

 

자바 코드로 변한해보면

private으로 선언된게 보입니다.

그렇다고 해서 companion object 내부에서만 접근이 가능한건 아닙니다.

const val와 똑같이 외부에서도 사용이 가능한데

 

이렇게 Person 클래스 안에 public static final로 생성이 된 것을 확인할 수 있습니다.

이 안에 name을 return 하는 getter가 있기 때문입니다.

 

그래서 import를 확인해 보면

Companion에서 값을 가져옵니다.

 

이렇게 사용해도 똑같다는 뜻입니다.

정확히는 아직 모르겠지만 언어 레벨에서 object에 접근할 수 있게 해주는 companion을 만들어줘서

companion object로 사용할 수 있다고 합니다.

 

또한

이런식으로 이름을 만들어줄 수 있습니다

 

그럼 Companion에서 접근했던 아까와 달리 People로 접근하는 것을 확인할 수 있습니다.

 

 

'Kotlin' 카테고리의 다른 글

[Kotlin] inline 함수, reified  (0) 2023.06.05
[Kotlin] Null 처리  (0) 2023.03.14
[Kotlin] Kotlin Property (코틀린 프로퍼티)  (0) 2023.03.01
Coroutine  (0) 2022.09.27
[Kotlin] Scope Function  (0) 2022.03.30