Inheritance and Interfaces
Inheritance Basics
Let a subclass reuse a parent class property.
inheritance
A subclass can extend an open parent class.
Inheritance Basics
InheritanceBasics.kt
Replay: real traced execution (multi-file project)
open class Animal(val name: String) {
fun label(): String {
return "animal:$name"
}
}
class Dog(name: String) : Animal(name)
fun main() {
val name = "Rex"
val dog = Dog(name)
val label = dog.label()
println("name=$name")
println("label=$label")
}
open class Animal(val name: String) {
fun label(): String {
return "animal:$name"
}
}
class Dog(name: String) : Animal(name)
fun main() {
val name = "Milo"
val dog = Dog(name)
val label = dog.label()
println("name=$name")
println("label=$label")
}
open class Animal(val name: String) {
fun label(): String {
return "animal:$name"
}
}
class Dog(name: String) : Animal(name)
fun main() {
val name = "Nia"
val dog = Dog(name)
val label = dog.label()
println("name=$name")
println("label=$label")
}
name ← Rex
9fun main() {10 val name→ Rex = "Rex" //@name="Milo", "Nia"11 val dog = Dog(nameRex)12 val label = dog.label()fun label(): String
1open class Animal(val name: String) {2 fun label(): String {3 return "animal:$nameRex"4 }label ← animal:Rex
11 val dog = Dog(name)12 val label→ animal:Rex = dog.label()1314 println("name=$nameRex")15 println("label=$labelanimal:Rex")16}outputname=Rex label=animal:Rex
name ← Milo
9fun main() {10 val name→ Milo = "Milo"11 val dog = Dog(nameMilo)12 val label = dog.label()fun label(): String
1open class Animal(val name: String) {2 fun label(): String {3 return "animal:$nameMilo"4 }label ← animal:Milo
11 val dog = Dog(name)12 val label→ animal:Milo = dog.label()1314 println("name=$nameMilo")15 println("label=$labelanimal:Milo")16}outputname=Milo label=animal:Milo
name ← Nia
9fun main() {10 val name→ Nia = "Nia"11 val dog = Dog(nameNia)12 val label = dog.label()fun label(): String
1open class Animal(val name: String) {2 fun label(): String {3 return "animal:$nameNia"4 }label ← animal:Nia
11 val dog = Dog(name)12 val label→ animal:Nia = dog.label()1314 println("name=$nameNia")15 println("label=$labelanimal:Nia")16}outputname=Nia label=animal:Nia