본문 바로가기
Language/Kotlin

[Kotlin] Object 키워드(Object Keyword)란?

by Jay Son 아기 냥이 해린 짱💖 2021. 7. 17.

JAVA와 동일하게 코틀린에서도 Object 형식으로 변수 및 클래스를 사용 할 수 있습니다.

코틀린 Ojbect 클래스의 경우 싱글턴 패턴으로 생성되어 2개 이상의 스레드에서 생성 할 경우에도 해당 클래스 인스턴스는 하나만 생성됩니다.

JAVA 역시 싱글턴 패턴 클래스 생성 후 사용 가능 하지만 코틀린에서는 더욱 간결하게 생성 및 사용 가능합니다.

Object 변수 선언

fun main() {
	rentPrice(10, 2, 1) 
}

fun rentPrice(standardDays: Int, festivityDays: Int, specialDays: Int): Unit {  

    val dayRates = object {                                                           //1
        var standard: Int = 30 * standardDays
        var festivity: Int = 50 * festivityDays
        var special: Int = 100 * specialDays
    }
    
    val dayRatesString = object {                                                     //2
        var standard: String = "standardDays"
        var festivity: String = "festivityDays"
        var special: String =  "specialDays"
    }

    val total = dayRates.standard + dayRates.festivity + dayRates.special       
	val totalString = dayRatesString.standard + dayRatesString.festivity + dayRatesString.special
    
    print("Total price: $$total")                                               //3
    print("Total price: $$totalString")                                         //4
}
결과
Total price: $500
Total price: $standardDaysfestivityDaysspecialDays

설명

1. Int형으로 결과값을 리턴하는 object 변수 생성

2. String 형으로 결과값을 리턴하는 object 변수 생성

3. object 변수로 생성된 dayRates, dayRatesString 확인 결과 각 형식에 맞게 결과를 출력

 

Object 클래스

object DoAuth {                                                 //1 
    fun takeParams(username: String, password: String) {        //2 
        println("input Auth parameters = $username:$password")
    }
}

fun main(){
    DoAuth.takeParams("foo", "qwerty")                          //3
}
결과 : input Auth parameters = foo:qwerty

설명

1. ojbect 클래스 생성

2. object 클래스 내 메소드 생성

3. ojbect 클래스를 객체가 생성되어 메소드 호출.

 

Companion Objects

Java static 메소드와 동일하기 코틀린에서도 Companion objects 메소드를 이용해서 static 메소드 사용 가능합니다.

class BigBen {                                  //1 
    companion object Bonger {                   //2
        fun getBongs(nTimes: Int) {             //3
            for (i in 1 .. nTimes) {
                print("BONG ")
            }
        }
    }
}

fun main() {
    BigBen.getBongs(12)                         //4
}
결과 : BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG BONG

설명 

1. 일반 클래스 생성

2. companion object 메소드 생성

3. companion object 기능 정의

4. companion object 메소드 호출

반응형