코틀린 object 키워드 3가지 사용법 | 동반객체, 싱글톤, 익명 객체

코틀린 Object 키워드 사용법

코틀린의 object 키워드가 의미하는 바는 클래스의 정의&생성을 동시에 하는 것이다. 코틀린에서 object 키워드는 동반객체, 싱글톤, 익명 객체에서 사용한다.

1. 동반객체

클래스의 프로퍼티 또는 메서드는 생성한 객체에서만 사용할 수 있고 다른 객체와는 공유할 수 없다. companion object는 그 클래스의 모든 객체가 공유하는 메서드 및 프로퍼티 정의가 가능하다.

class Bank(
    private val bankName: String
) {
    companion object {
        const val discount = 5
    }
    
    override fun toString(): String{
        return "bankName=$bankName discount=$discount" 
    }
}

fun main() {
    val kbBank = Bank("KB국민은행")
    val shBank = Bank("수협은행")
    
    println(kbBank.toString())
    println(shBank.toString())
    println(Bank.discount) // 바로 접근 가능
}


2.싱글톤 클래스

싱글톤 클래스는 객체가 단 하나 존재하는 클래스를 의미하고 object 키워드를 이용한다.

object Bank { 
    val discount by lazy { 5.50 }
} 

3.익명객체

익명객체는 말 그대로 객체의 명이 존재하지 않는 것을 의미한다. object 키워드를 이용하여 추상클래스를 상속 또는 인터페이스 구현할 수 있다.

interface BankInterface { 
    fun account()
}

abstract class BankClass {
    abstract fun account()
}

fun main() {
    val bankInterface = object : BankInterface {
        override fun account() {
            println("Interface Account")
        }
    }

    val bankClass = object : BankClass() {
        override fun account() {
            println("abstract Class Account")
        }
    }

    println(bankInterface.account())
    println(bankClass.account())
}

인터페이스를 구현한 클래스를 이용하지 않고 추상클래스를 상속한 클래스를 이용하지 않고도 활용할 수 있다. 또한, 이러한 방법은 안드로이드의 listener 에 많이 사용된다.

val listener = object: View.Clicklistener {
    override fun onClick(v: View){
        println("View Clicked")
    }
}


Related Posts