Kotlin의 Companion Object와 Object

Kotlin DEVELOPMENT IT

Kotlin에서 Class내에 companion object로 선언하면 객체를 생성하지 않아도 해당 프로퍼티에 접근하여 사용 가능하다.

class Person {
  var id: String = "itchef"
  var name: String = "Azeze"
  companion object {
    var language: String = "Korean"
    fun work(){
      println("working....")
    }
  }
}

fun main(){
  println(Person.language)
  Person.language = "English"
  println(Person.language)
  Person.work()
}

실행결과
Korean
English
working….

위와 같이 companion object로 선언된 맴버 변수나 메서드는 해당 클래스의 객체 생성 없이도 get/set 및 실행이 가능하다.

또 비슷한 개념으로 object 키워드로 선언할 수 있는데 다음을 보자.

object OCustomer {
  var name = "Fortress M"
  fun hiThere() = println("Hi! There!")
  val HOBBY = Hobby("Basketball")
  init {
    println("Initialized Now!")
  }
}

class Hobby(val name: String)

fun main(){
  OCustomer.hiThere()
  OCustomer.name = "Yonggari"
  println("name = ${OCustomer.name}")
  println(OCustomer.HOBBY.name)
}

실행결과
Initialized Now!
Hi There!
name = Yonggari
Basketball

object 키워드로 선언하는 방식도 역시나 객체를 생성하지 않고 바로 호출하여 사용 가능하다.
Kotlin에서 object 선언된 객체를 Java에서 사용하는 방법은 다음과 같다.

public class OCustomerAccess {
  
  public static void main(String[] args){

    String name = OCustomer.INSTANCE.getName(); //Kotlin의 object 선언 객체의 메서드 접근
    System.out.println(name);

  }

}

댓글 남기기