Chapter 7 - Section 2
fun main(args: Array<String>) {
val buster = Retriever()
// buster.speak()
makeItTalk(buster)
reportBreed("Buster", buster)
}
fun makeItTalk(dog: Retriever) {
dog.speak()
}
fun reportBreed(name: String, dog: Dog) {
println("$name is a ${dog::class.simpleName}")
println("This dog's fur is ${dog.fur}")
}
interface Dog {
var fur: String
fun speak() {
println("Woof!")
}
}
interface Cat{
var fur: String
fun speak() {
println("Meow!")
}
}
class Retriever : Dog, Cat {
override var fur: String
get() = "golden"
set(value) {}
override fun speak() {
super<Dog>.speak()
super<Cat>.speak()
}
}