Backend 언어/Kotlin

객체에 관하여

민초부 2020. 10. 17. 16:07
반응형

- 객체 (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