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 메소드 호출
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 클래스를 봉인한다.(Sealed Classes)란? (0) | 2021.07.17 |
---|---|
[Kotlin] enum 클래스(Enum Classes)란? (0) | 2021.07.17 |
[Kotlin] 데이터 클래스(Data Classes)란? (0) | 2021.07.14 |
[Kotlin] if 조건문 (Conditional Expression) (34) | 2021.06.28 |
[Kotlin] 반복문 만들기 (Loops) (0) | 2021.06.21 |