是的,Kotlin 數(shù)據(jù)類可以實現(xiàn)多態(tài)。在 Kotlin 中,多態(tài)是通過接口和抽象類實現(xiàn)的。雖然數(shù)據(jù)類主要用于簡化數(shù)據(jù)結(jié)構(gòu)的創(chuàng)建,但它們也可以實現(xiàn)接口或繼承抽象類,從而實現(xiàn)多態(tài)。
以下是一個簡單的示例,展示了如何在 Kotlin 中使用數(shù)據(jù)類實現(xiàn)多態(tài):
// 定義一個接口
interface Animal {
fun makeSound(): String
}
// 定義一個抽象類
abstract class Mammal(val name: String) {
abstract fun makeSound(): String
}
// 定義一個數(shù)據(jù)類 Dog,繼承自 Mammal 并實現(xiàn) Animal 接口
data class Dog(name: String, val breed: String) : Mammal(name), Animal {
override fun makeSound(): String {
return "Woof!"
}
}
// 定義一個數(shù)據(jù)類 Cat,繼承自 Mammal 并實現(xiàn) Animal 接口
data class Cat(name: String, val color: String) : Mammal(name), Animal {
override fun makeSound(): String {
return "Meow!"
}
}
fun main() {
val animals: List<Animal> = listOf(Dog("Buddy", "Golden Retriever"), Cat("Whiskers", "Black"))
for (animal in animals) {
println("${animal.name} says ${animal.makeSound()}")
}
}
在這個示例中,我們定義了一個 Animal
接口和一個 Mammal
抽象類。然后,我們創(chuàng)建了兩個數(shù)據(jù)類 Dog
和 Cat
,它們分別繼承自 Mammal
并實現(xiàn)了 Animal
接口。這樣,我們就可以在 main
函數(shù)中將 Dog
和 Cat
對象存儲在一個 List<Animal>
中,并通過循環(huán)遍歷列表來調(diào)用它們的 makeSound()
方法,實現(xiàn)多態(tài)。