본문 바로가기

Android on Kotlin

[코틀린/안드로이드] Companion Object 란?

 

오늘은 간단한 예제를 통해 Companin Object에 대해 자세히 알아보겠습니다.

 

 

 


간단한 예제

 

전체 코드 구성 : Main 함수와 TestClass라는 클래스가 존재함.

전체 코드

 


TestClass에는 변수 2개(compVariable, normVariable) 가 선언되어 있습니다.

하나(compVariable)는 컴패니언 오브젝트에 의해 감싸져 있고, 하나(normVariable)는 그냥 선언되어 있습니다.

 


위 클래스에서 각기 다른 방식으로 선언된 변수들을 사용하기 위해선 각각 그 사용법이 다릅니다.

클래스 내부에서 컴패니언 오브젝트로 감싸서 선언한 변수(compVariable)는 전역변수처럼 그냥 사용할 수 있습니다.

반면, 클래스 내부에 그냥 선언된 변수는 해당 클래스를 인스턴스화한 객체를 통해서만 접근할 수 있습니다.


왜 이런 사용 방법에 차이가 있는 것일까요? 그 이유는 바로 컴파일 시에 각각 필요한 영역들을 할당받게 되는데,  Companion Object 로 선언한 변수는 클래스 영역에 위치하고 그냥 선언된 변수는 클래스 내부에 위치하기 때문입니다.