Kotlin : Object 키워드

정종욱·2023년 7월 5일
0

Kotlin

목록 보기
12/16
post-thumbnail

static 함수와 변수

companion object Factory: Log {
	private const val MIN_AGE = 0
    fun newBaby(name: String): Person {
    	return Person(name, MIN_AGE)
    }
    
    override fun log() {
    	...
    }
}

static 대신 companion object 를 사용

companion object 는 하나의 객체로 간주되어 이름을 붙일 수 있고, interface 또한 구현할 수 있다.

companion object {
	@JvmStatic
    fun newBaby() {
    	...
    }
}

companion object 에 이름을 붙여주지 않는다면 기본적으로 ClassName.Companion.newBaby() 로 호출해야한다. 이를 ClassName.newBaby() 와 같이 호출하고 싶다면 해당 메서드에 @JvmStatic 을 붙이면 된다.

👏 TIP
- static : 클래스가 인스턴스화 될 때 새로운 값이 복제되는 것이 아니라 정적으로 인스턴스끼리의 값을 공유
- companion object : 클래스와 동행하는 유일한 오브젝트
- 변수에 const 를 붙이면 컴파일변수이다.

싱글톤

object Singleton {
	var a: Int = 0
}

위와 같이 표기할 수 있으며 Singleton.a 로 접근 가능하다. 애당초 인스턴스가 하나이기 때문에 가능하다.

👏 TIP
- 싱글톤 : 단 하나의 인스턴스만을 갖는 클래스

익명 클래스

fun main() {
	moveSomething(object: Movable) {
    
    	override fun move() {
        	println("move")
        }
        
        override fun fly() {
        	println("fly")
        }
    }
}

private fun moveSomething(movable: Movable) {
	movable.move()
    movable.fly()
}

코틀린에서는 object: Type 그리고 중괄호로 익명 클래스를 표현한다.

0개의 댓글

관련 채용 정보