본문 바로가기
Study/WEB

[Kotlin] 오브젝트

by Becoming a Hacker 2022. 1. 6.
반응형

Object

Object로 선언된 객체는 최조 생성 시 자동으로 생성되며, 이후에는 코드 전체에서 공용으로 사용될 수 있음.

 

Companion Object

Class 내에 오브젝트가 존재할 경우, 인스턴스끼리 해당 오브젝트를 서로 공유함.

 

예제

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

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

 

예제 결과

예제 결과

 

Listener

이벤트를 수신해서 출력하는 클래스(EventPrinter)와 이벤트를 발생시키는 클래스(Counter)를 서로 연결해주는 역할(EventListener)을 함.

 

예제2

fun main() {
    EventPrinter().start()
}

interface EventListener{
    fun onEvent(count:Int)
}

class Counter(var listener: EventListener){
    fun count(){
        for(i in 1..100){
            if(i%5==0) listener.onEvent(i)
        }
    }
}

class EventPrinter{
    fun start(){
    val counter = Counter(object: EventListener{
        override fun onEvent(count:Int){
            print("${count}-")
        }
    })
    counter.count()
    }
}

 

예제2 결과

예제2 결과

'Study > WEB' 카테고리의 다른 글

[Kotlin] lazy  (0) 2022.01.06
[Kotlin] Data Class  (0) 2022.01.06
[Kotlin] 스코프 함수  (0) 2022.01.05
[Kotlin] 고차함수  (0) 2022.01.05
[Kotlin] 추상화 (abstract, interface)  (0) 2022.01.05

댓글