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); } }