반응형

C#, JAVA등에서는 클래스 안에서 정의된 변수나 매서드들을 객체 생성 없이 사용하는 경우 static을 사용한다.

코틀린도 같은 기능이 있는데 키워드가 다르다.

companion을 사용한다.

 

 

1. Class 정의 (companion object {})

class Person (name:String) {
    companion object{
        val menu = "pizza"
        fun eatDinner(){
            println("$menu is good!")
        }
    }

    val name : String
    init {
        this.name = name
        println(this.name)
    }
}

Person.eatDinner()  // companion으로 선언되어 바로 접근 가능
var pp = Person("ppp")  // companion 밖에 선언되어 객체 생성을 해야 작동

// pizza is good!  // companion
// ppp  // init

 

 

  • 기본 클래스 정의에 companion object를 사용한다.
    • companion object 안에 있는 값들은 정적 변수/매서드가 된다.
    • 일일이 static을 붙일 필요가 없다.
    • static과 일반 class내용을 같이 혼용하여 사용 가능하다.
반응형

+ Recent posts