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