Kotlin, Object

Yebali·2021년 8월 15일
0

약간의_Kotlin

목록 보기
9/19

Object

기존에 클래스의 함수나 맴버변수를 사용하기 위해서는 실제로 해당 클래스를 인스턴스로 만들어 주어야 했다.

하지만 인스턴스를 만들지 않고 함수나 맴버변수들을 여기저기서 사용할 수 있도록 지원하는(Singleton) Kotlin의 기능이 Object 이다.

Object는 최초 사용시 자동으로 생성되고, 생성자도 필요하지 않다.

object Counter {
    var count = 0
    
    fun countUp() {
        count++
    }
    
    fun clear() {
        count = 0
    }
}

fun main() {        
    
    println(Counter.count)
    
    Counter.countUp()
    Counter.countUp() 
    println(Counter.count)
    
    Counter.clear()
    println(Counter.count)    
}

Class 안의 Object

클래스 안에서 Object를 만들면 여러개의 인스턴스들이 공통으로 사용하는 값이나 함수를 아래 그림 처럼 가질 수 있다.

기능 적으로는 기존 언어들의 Static과 비슷하다.

위 기능은 'companion object' 키워드를 통해 구현이 가능하다.

class FoodPoll (val name: String) {
    companion object {
        var total = 0
    }
    
    var count = 0
    
    fun vote() {
        total++
        count++
    }
}

fun main() {        
    
    var a = FoodPoll("짜장")
    var b = FoodPoll("짬뽕")
    
    a.vote()
    a.vote()
    
    b.vote()
    b.vote()
    b.vote()
    
    println("${a.name} : ${a.count}")
    println("${b.name} : ${b.count}")
    println("총계 : ${FoodPoll.total}")  
}
profile
머리에 다 안들어가서 글로 적는 중

0개의 댓글