자바의 제네릭과 동일하며
인자로 사용되는 타입에 따라 구체화된다.
fun main() {
Generic(Animal()).start()
Generic(dog()).start()
Generic(cat()).start()
}
open class Animal{
open fun eat(){
println("동물이 음식을 먹습니다.")
}
}
class cat : Animal(){
override fun eat(){
println("고양이가 음식을 먹습니다.")
}
}
class dog : Animal(){
override fun eat(){
println("강아지가 음식을 먹습니다.")
}
}
class Generic<T : Animal> (val t : T){
fun start(){
t.eat()
}
}