[kotlin] 공변성 연산자
코틀린에서는 공변성(co-variant)을 나타내기 위한 연산자로 out
키워드를 사용합니다. 공변성은 부모 자료형과 그 자식 자료형 간의 관계를 설명하는데 사용되며, 이를 통해 컴파일러가 자료형의 변환을 허용하거나 제한할 수 있습니다.
공변성의 이점
공변성은 불변성(invariance)과 대조적으로, 자식 자료형이 부모 자료형의 하위 자료형으로 취급될 수 있도록 허용합니다. 이는 자료구조를 더 유연하게 다룰 수 있게 해주며, 코드의 재사용성을 높여줍니다.
예제
다음은 out
키워드를 사용하여 공변성을 나타내는 예제입니다.
interface Animal {
fun speak()
}
class Dog : Animal {
override fun speak() {
println("Woof!")
}
}
class Cat : Animal {
override fun speak() {
println("Meow!")
}
}
class AnimalShelter<out T : Animal>(private val animal: T) {
fun makeAnimalSpeak() {
animal.speak()
}
}
fun main() {
val dogShelter: AnimalShelter<Dog> = AnimalShelter(Dog())
val catShelter: AnimalShelter<Cat> = AnimalShelter(Cat())
dogShelter.makeAnimalSpeak()
catShelter.makeAnimalSpeak()
}
위의 예제에서 AnimalShelter
클래스의 제네릭 타입 매개변수 T
에 out
키워드가 사용되었습니다. 이를 통해 AnimalShelter<Dog>
와 AnimalShelter<Cat>
이 AnimalShelter<Animal>
의 서브타입으로 취급될 수 있게 되었습니다.
결론
코틀린의 공변성 연산자인 out
키워드를 사용하여 자료형의 변환을 더욱 유연하게 다룰 수 있으며, 이를 통해 코드의 재사용성과 유지보수성을 향상시킬 수 있습니다.
더 많은 정보는 코틀린 문서를 참고하세요.