是的,Kotlin 数据类可以实现多态。在 Kotlin 中,多态是通过接口和抽象类实现的。虽然数据类主要用于简化数据结构的创建,但它们也可以实现接口或继承抽象类,从而实现多态。
以下是一个简单的示例,展示了如何在 Kotlin 中使用数据类实现多态:
// 定义一个接口 interface Animal { fun makeSound(): String } // 定义一个抽象类 abstract class Mammal(val name: String) { abstract fun makeSound(): String } // 定义一个数据类 Dog,继承自 Mammal 并实现 Animal 接口 data class Dog(name: String, val breed: String) : Mammal(name), Animal { override fun makeSound(): String { return "Woof!" } } // 定义一个数据类 Cat,继承自 Mammal 并实现 Animal 接口 data class Cat(name: String, val color: String) : Mammal(name), Animal { override fun makeSound(): String { return "Meow!" } } fun main() { val animals: List= listOf(Dog("Buddy", "Golden Retriever"), Cat("Whiskers", "Black")) for (animal in animals) { println("${animal.name} says ${animal.makeSound()}") } }
在这个示例中,我们定义了一个 Animal
接口和一个 Mammal
抽象类。然后,我们创建了两个数据类 Dog
和 Cat
,它们分别继承自 Mammal
并实现了 Animal
接口。这样,我们就可以在 main
函数中将 Dog
和 Cat
对象存储在一个 List
中,并通过循环遍历列表来调用它们的 makeSound()
方法,实现多态。