💽
object
March 08, 2023
object
- 클래스를 정의함과 동시에 객체를 생성
- 싱글톤을 쉽게 만들 수 있는 키워드
- 생성자 사용 불가
- 프로퍼티, 메소드, 초기화 블록은 사용 가능
- 다른 클래스나 인터페이스를 상속받을 수 있음
- 에러 코드 정의할 때 많이 사용
fun main() {
Counter
println(Counter.count)
Counter.countUp()
Counter.countUp()
println(Counter.count)
// 초기화
// 0
// 2 (class였다면 모두 다른 인스턴스이기 때문에 0이었을 것)
}
object Counter {
init {
printlnt("초기화")
}
var count = 0
fun countUp() {
count++
}
}
companion object
- 동반 객체
- java의 static과 동일한 역할
- 클래스 내에 하나만 생성할 수 있음
class Book {
companion object {
val NAME = "hello"
fun create() = Book() // builder, factory pattern
}
}