[kotlin] class, object, companion object

2021. 6. 17. 14:50모바일/Android_Kotlin

class, object, companion object

class

  • 자바의 클래스와같다

object

  • 싱글턴을 간단하게 구현할 수 있게 해준다
  • object 키워드는 클래스를 정의하면서 객체를 생성합니다.
fun main() {
    val singletonClass = Singleton
    println(singletonClass.st)
    println(singletonClass.function())
}
object Singleton{
    val st = "하하"
    fun function() = "싱글턴메소드"
}
//하하
//싱글턴메소드

companion object

  • static 처럼 동작하게 만들어준다
  • static 과의 차이점은 companion object는 객체이고 변수에 할당할 수 있다(자바는 불가능)
  • companion object 에 이름을 지을 수 있다.
fun main() {
    val myClass = MyClass()
    println(myClass.prop) //companion이 아니므로 인스턴스(객체)화 해야한다
    println(MyClass.zz) 
  // companion이므로 클래스가 메모리에 적재될 때 자동으로 함께 생성되므로 인스턴스 생성 없이도 클래스명 다음에 .을 붙여서 사용 가능하다
}
class MyClass{
    val prop = "ㅋㅋ"
    companion object{
        val zz = "zz"
    }
}

//ㅋㅋ
//zz
  • MyClass.zz = MyClass.
fun main() {
    val singletonClass = Singleton
    println(singletonClass.st)
    println(singletonClass.function())
    println(MyClass2.MyCompanion2.zz)
    println(MyClass2.zz)
}
class MyClass2{
    val prop = "ㅋㅋ"
    companion object MyCompanion2 {
        val zz = "zz"
    }
}