반응형
- 객체 (Object) : 특정 객체 안에 있는 funtion이나 property를 생성자 없이 사용하기 위해 class 대신하여 만드는 객체
- 이렇게 만들어진 Object는 최초로 선언될 때 생성되어 사용되며 그 이후에는 선언을 해줘도 새로 생성되는 것이 아닌 계속 재활용되어 사용된다.
object CarFactory {
val cars = mutableListOf<Car>()
fun makeCar(horsepowers: Int): Car {
val car = Car(horsepowers)
cars.add(car)
return car
}
}
class Car(power: Int) {
}
위의 코드 처럼 생성하여 선언해주면 그 이후에 CarFactory를 불러줄 때 생성되어 계속 사용된다.
-----> 이를 싱글톤 패턴(Singleton pattern)이라 한다.
val car = CarFactory.makeCar(150)
println(CarFactory.cars.size)
- Companion object : 특정 Class의 모든 instance가 공유하는 객체를 만들고 싶을 때 사용 (kotlin은 static이 없다 )
예시
fun main(){
var a = FoodSelection("사과")
var b = FoodSelection("배")
a.vote()
b.vote()
b.vote()
a.vote()
a.vote()
}
class FoodSelection(val name: String){
companion object {
val total = 0
}
val count = 0
fun vote(){
total++
count++
}
}
이렇게 하면 FoodSelection class안의 property 중 count는 a, b의 객체 각 각 다른 값이지만 total은 a, b끼리 공유하는 변수로 5라는 값을 가지게 된다.
반응형
'Backend 언어 > Kotlin' 카테고리의 다른 글
코틀린에서의 Null Safe 처리 (0) | 2020.10.17 |
---|---|
변수에 관하여 (0) | 2020.10.17 |
Class에 관하여 (0) | 2020.10.11 |
고차 함수 (0) | 2020.10.11 |
접근 범위와 접근 제한 (0) | 2020.10.11 |