Inheritance and Interfaces
Base Calls
Use super to call the parent implementation.
super
`super` calls behavior from the parent class.
Base Calls
BaseCalls.kt
Replay: real traced execution (multi-file project)
open class Greeter {
open fun greet(name: String): String {
return "Hello, $name"
}
}
class LoudGreeter : Greeter() {
override fun greet(name: String): String {
val base = super.greet(name)
return "$base!"
}
}
fun main() {
val name = "Ada"
val greeter = LoudGreeter()
val message = greeter.greet(name)
println("name=$name")
println(message)
}
open class Greeter {
open fun greet(name: String): String {
return "Hello, $name"
}
}
class LoudGreeter : Greeter() {
override fun greet(name: String): String {
val base = super.greet(name)
return "$base!"
}
}
fun main() {
val name = "Bo"
val greeter = LoudGreeter()
val message = greeter.greet(name)
println("name=$name")
println(message)
}
open class Greeter {
open fun greet(name: String): String {
return "Hello, $name"
}
}
class LoudGreeter : Greeter() {
override fun greet(name: String): String {
val base = super.greet(name)
return "$base!"
}
}
fun main() {
val name = "Cy"
val greeter = LoudGreeter()
val message = greeter.greet(name)
println("name=$name")
println(message)
}
name ← Ada
14fun main() {15 val name→ Ada = "Ada" //@name="Bo", "Cy"16 val greeter = LoudGreeter()17 val message = greeter.greet(nameAda)override fun greet(name: String): String
7class LoudGreeter : Greeter() {8 override fun greet(nameAda: String): String {9 val base = super.greet(nameAda)10 return "$base!"open fun greet(name: String): String
1open class Greeter {2 open fun greet(nameAda: String): String {3 return "Hello, $nameAda"4 }base ← Hello, Ada
8override fun greet(name: String): String {9 val base→ Hello, Ada = super.greet(nameAda)10 return "$baseHello, Ada!"11}message ← Hello, Ada!
16 val greeter = LoudGreeter()17 val message→ Hello, Ada! = greeter.greet(nameAda)1819 println("name=$nameAda")20 println(messageHello, Ada!)21}outputname=Ada Hello, Ada!
name ← Bo
14fun main() {15 val name→ Bo = "Bo"16 val greeter = LoudGreeter()17 val message = greeter.greet(nameBo)override fun greet(name: String): String
7class LoudGreeter : Greeter() {8 override fun greet(nameBo: String): String {9 val base = super.greet(nameBo)10 return "$base!"open fun greet(name: String): String
1open class Greeter {2 open fun greet(nameBo: String): String {3 return "Hello, $nameBo"4 }base ← Hello, Bo
8override fun greet(name: String): String {9 val base→ Hello, Bo = super.greet(nameBo)10 return "$baseHello, Bo!"11}message ← Hello, Bo!
16 val greeter = LoudGreeter()17 val message→ Hello, Bo! = greeter.greet(nameBo)1819 println("name=$nameBo")20 println(messageHello, Bo!)21}outputname=Bo Hello, Bo!
name ← Cy
14fun main() {15 val name→ Cy = "Cy"16 val greeter = LoudGreeter()17 val message = greeter.greet(nameCy)override fun greet(name: String): String
7class LoudGreeter : Greeter() {8 override fun greet(nameCy: String): String {9 val base = super.greet(nameCy)10 return "$base!"open fun greet(name: String): String
1open class Greeter {2 open fun greet(nameCy: String): String {3 return "Hello, $nameCy"4 }base ← Hello, Cy
8override fun greet(name: String): String {9 val base→ Hello, Cy = super.greet(nameCy)10 return "$baseHello, Cy!"11}message ← Hello, Cy!
16 val greeter = LoudGreeter()17 val message→ Hello, Cy! = greeter.greet(nameCy)1819 println("name=$nameCy")20 println(messageHello, Cy!)21}outputname=Cy Hello, Cy!