모바일 개발하는 자바리안의 메모장

Kotlin - object & companion object 본문

Android/Android.Kotlin

Kotlin - object & companion object

자바리안 2023. 4. 14. 18:35
반응형

object 와 companion object 의 차이점을 알아봤다.

 

Kotlin 에서는 싱글톤 클레스를 정의할 때 ojbect 키워드를 사용된다. class가 아닌 object로 선언해줌으로서 완전 static 클레스가 된다. (자바에서 싱글톤 만들던거랑 비교해보면 엄청 편함...)

아래 예제와 같이 별도의 별도의 객체생성 없이 클래스를 통해 바로 인스턴스 함수, 변수에 접근할 수 있다.

object MyObject {
    fun myFunction() {
        println("myFunction inside MyObject")
    }
}

fun main() {
    MyObject.myFunction()
}

 

companion object 또한 싱글톤과 관련된 문법이며, 클래스에 연결된 특수한 종류의 객체이다. Companion object는 일반 클래스 안에 정의하며 object 와 같이 전체가 아닌 companion object 내에 정의된 함수, 변수만 싱글톤으로 생성된다. 쉽게 생각하면 companion object를 갖고 있는 class는 그냥 일반 class인 동시에 static 인스턴스들을 포함하고 있다고 생각하면 될 것 같다.  

Static 인스턴스 접근 방법은 object와 동일하다.

class MyClass {
    companion object {
        const val INT_A = 10
        fun myFunction() {
            println("myFunction inside MyClass")
        }
    }
}

fun main() {
    val classA = MyClass()
    val classB = MyClass()
    println(classA) //
    println(classB) // 일반 class라서 당연히 주소값 다름

    MyClass.myFunction()
    println(MyClass.INT_A) 
}
반응형

'Android > Android.Kotlin' 카테고리의 다른 글

Kotlin - lazy  (0) 2021.12.22
Kotlin - Null Safety (?, !!)  (0) 2021.12.14
Kotlin - 변수 초기화(Initialization)  (0) 2021.12.14
Comments