是的,Kotlin 委托可以實現多態。在 Kotlin 中,委托是一種將函數作為參數傳遞給另一個函數的技術。通過使用委托,您可以在運行時動態地改變要執行的操作,從而實現多態。
以下是一個簡單的示例,說明如何使用委托實現多態:
interface Animal {
fun makeSound(): String
}
class Dog(override val name: String) : Animal {
override fun makeSound(): String = "Woof!"
}
class Cat(override val name: String) : Animal {
override fun makeSound(): String = "Meow!"
}
fun animalSound(animal: Animal): String {
return animal.makeSound()
}
fun main() {
val dog = Dog("Buddy")
val cat = Cat("Kitty")
println(animalSound(dog)) // 輸出 "Woof!"
println(animalSound(cat)) // 輸出 "Meow!"
}
在這個例子中,我們定義了一個 Animal
接口,它有一個 makeSound()
方法。然后,我們創建了兩個類 Dog
和 Cat
,它們都實現了 Animal
接口。最后,我們定義了一個 animalSound()
函數,它接受一個 Animal
類型的參數,并調用其 makeSound()
方法。
在 main()
函數中,我們創建了一個 Dog
對象和一個 Cat
對象,并將它們分別傳遞給 animalSound()
函數。盡管這兩個對象具有不同的類型,但它們都可以被視為 Animal
類型,因此我們可以根據它們的實際類型調用正確的 makeSound()
實現。這就是多態的體現。