Kotlin 강좌 16 - 오브젝트

dyeon-dev·2023년 10월 15일
0

Kotlin

목록 보기
10/17

기존에 배웠던 class는 단지 인스턴스 객체를 만들기 위한 '틀'이기 때문에 내부에 있는 속성이나 함수를 사용하려면 생성자를 통해 실체가 되는 인스턴스 객체를 만들어야 했다. 여러개의 인스턴스 객체가 필요하지 않고, 단 하나의 객체만으로 공통적인 속성과 함수를 사용해야하는 코드에서는 굳이 class를 쓸 필요없이 오브젝트(object)를 사용하면 된다.

Singleton Pattern

클래스의 인스턴스를 단 하나만 만들어 사용하도록 하는 코딩 아키텍쳐 패턴

오브젝트로 선언된 객체는 최초 사용시 자동으로 생성되며 이후에는 코드 전체에서 공용으로 사용될 수 있으므로 프로그램 종료 전까지 내용을 묶어 만드는 것이 좋다.

Companion Object

기존 클래스 안에서 인스턴스 기능을 사용할 수 있다.
클래스의 인스턴스 기능은 그대로 사용하면서 인스턴스 간의 공용으로 사용할 속성과 함수를 별도로 만드는 기능

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}")
}

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

짜장: 2
짬뽕: 3
총계: 5

서로 다른 인스턴스 임에도 Companion Object 내에 있는 total을 공유하고 있기 때문에 모든 인스턴스에서 투표수를 누적할 수 있다.

0개의 댓글