Kotlin/Basic
Kotlin은 Java와 무엇이 다른가? (11) - Object
bongveloper
2024. 9. 20. 17:17
Object
Kotlin에서 object는 Java의 object 하고는 좀 차원이 다르다.
Kotlin에 Object는 크게 3가지로 나뉜다.
- Object
- Companion Object
- Anonymous Object
이 3개의 Object는 쓰임과 위치에 따라서 달라지게 된다.
Object
- object 키워드는 클래스 외부에서 쓰이게 되고 싱글톤 객체를 쉽게 생성하게 해주는 키워드이다.
- 동시성 이슈를 해결해 주기 때문에 Thread Safe 하게 사용이 가능하다.
- 생성하고자 하는 객체 앞에 object를 붙여 사용한다.
object 객체이름
object Car { var carName: String = "GM" fun start(){ println("start: $carName") } }
fun main(){
Car.carName = "Hyundai"
println("carName: $Car.carName")
Car.start()
}
## Companion Object
- Companion Object는 클래스 내부에서 사용된다.
- 말 그대로 Class와 동반되는 객체이기 때문이다.
- Companion Object는 Java의 static과 비슷한 기능을 하지만 보다 더 많은 기능을 가지고 있는 키워드이다.
- 클래스 내부에서 `companion object{}` 로 사용이 가능하다.
```kotlin
class Car private constructor(
val model: String,
val color: String,
val year: Int
){
companion object Factory {
private const val DEFAULT_COLOR = "RED"
fun hyundaiCar(year: Int){
return Car("hyundai", DEFAULT_COLOR year)
}
}
}
fun main(){
Car.Factory.hyundaiCar(2023)
}
companion object 키워드를 통해 Car라는 클래스의 companion object를 구현했다.
- companion object 옆에 Factory라는 이름을 부여하였고 다른 이름 또는 없는 경우에는 Companion이라는 이름을 사용한다.
- 공백에 경우에는 호출할 때에도 Companion이라는 이름으로 호출해야 한다. Car.Companion.hyundaiCar()
- DEFAULT_COLOR에 const 키워드를 사용해 컴파일 시 생성한다.
- const 키워드가 없는 경우에는 런타임 시 생성된다.
- companion object는 객체 그 자체여서 interface를 구현 가능하다.
- companion object 이름을 생략하고 싶다면 @JvmStatic을 사용해 생략할 수도 있다.
Anonymous Object
- Java에서는 Anonymous Class(익명 클랙스)를 Anonymous Object로 구현한다.
- 일회성으로 사용되는 객체를 만들어야 할 때 사용되지만 사실 실제로 사용해 본 적은 없다.
- 객체 앞에
object : 객체
를 사용해서 구현이 가능하다.
abstract class Car {
abstract fun accelerate()
abstract fun brake()
}
val sportsCar = object : Car()
{
override fun accelerate() {
println("Sports car is accelerating rapidly")
}
override fun brake() {
println("Sports car is braking sharply")
}
}
sportsCar.accelerate()
sportsCar.brake()
요약
- object 키워드는 상황에 따라 위치에 따라 달리 쓰인다.
- 싱글톤 패턴을 구현해야 하는 경우에는
object 객체이름
으로 구현한다. - static 한 값을 구현해야 하는 경우에는 클래스 내부에서
companion object {}로
구현한다. - companion object는 이름을 설정할 수 있다.
- const 키워드의 유무에 따라 컴파일 시 생성, 런타임 시 생성으로 나뉜다.
object : 객체
를 통해서 anonymous object Java에 익명 클래스 구현이 가능하다.
출처:https://www.inflearn.com/course/java-to-kotlin/dashboard
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) 강의 | 최태현 - 인프런
최태현 | 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., 요즘 대세인 코틀린을 공부하고 싶다면?⭐ J
www.inflearn.com