본문 바로가기
Android/Kotlin 기초

Kotlin 기초 문법 7 - object, companion object

by 2Plus 2020. 5. 26.

Photo by Umer Sayyam on Unsplash

 

Object

 코딩을 할 때 싱글턴 패턴이 필요한 경우가 생길 수도 있을 것이다. Kotlin에서는 싱글턴 패턴을 직접 만들어서 사용할 수도 있지만, Object 선언을 통해서 편하게 싱글턴 객체를 생섵할 수 있는 방법도 제공해 준다. 클래스를 선언할 때 class 키워드 대신에 object 키워드를 사용하면 간편하게 만들 수 있다.

 

[Code]

 

 

[결과]

 

 

 class 키워드 대신에 object 키워드를 사용한 것만 제외하면 클래스를 선언하는 것과 다를 것이 없다. 이렇게 object로 선언하면 SingletonObject라는 식별자로 객체에 바로 접근하는 것이 가능하다.

 

 

Companion Object

 companion object에 대해 설명하기 전에 미리 말하면, companion object는 static 처럼 동작하는 것 같이 보이지만 실제로 동일하지는 않다. 그렇기 때문에 완전히 같은 것이라고 착각하고 사용하지는 않길 바란다. 겉보기에는 동일할 수 있기 때문에 해당 부분에 대해서는 추후에 따로 포스팅을 해 볼 예정이다.

 companion object는 클래스 안에 들어가게 되는 이름이 없는 객체이다. 해당 클래스로 생성된 모든 객체 인스턴스들이 공유하는 객체를 만들 때 사용할 수 있다. static과 개념은 유사하다. 클래스 정의 block 내에서 companion object 키워드를 통해 블럭을 지정하고 객체를 선언해주면 된다.

 

[Code]

 

 

[결과]

 

 

 companion object는 위와 같이 클래스 내부에 선언하면 된다. 이름이 없기 때문에 따로 정의할 필요는 없다. constructor를 private으로 지정하고 companion object만을 통해 생성할 수 있게 하여 인스턴스가 몇 개 생성되었는 지를 카운팅하는 예제를 작성해 보았다. 정상적으로 동작하는 것을 확인할 수 있다. 또, 앱 개발시 로깅을 하는 데에 있어 TAG를 companion object에 정의해두고 사용하면 편리하다. 위와 같이 사용하면 된다.

 

 

반응형

댓글