companion object
-자바의 static 대신 사용된다.
-정적인 메소드나 정적인 변수를 선언할 때 사용한다.
class Book private constructor(val id : Int, val name:String){
companion object Bookfactory : IdProvider {
//companion object : Idprovider
override fun getId() : Int {
return 444
}
val myBook = "new book"
fun create()=Book(getId(), myBook)
}
}
interface IdProvider{
fun getId() : Int
}
companion object가 하는 일 private property나 메소드를 읽어 올 수 있다
상속이 가능하고 위의 코드처럼 companion object의 이름을 지정할 수 있다.
class 안에는 1개의 companion object만 들어갈 수 있다.