Use super to call the parent implementation.

super `super` calls behavior from the parent class.

Base Calls

name
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)
}
  1. name ← Ada

    14fun main() {15    val name→ Ada = "Ada" //@name="Bo", "Cy"16    val greeter = LoudGreeter()17    val message = greeter.greet(nameAda)
  2. 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!"
  3. open fun greet(name: String): String

    1open class Greeter {2    open fun greet(nameAda: String): String {3        return "Hello, $nameAda"4    }
  4. base ← Hello, Ada

    8override fun greet(name: String): String {9    val base→ Hello, Ada = super.greet(nameAda)10    return "$baseHello, Ada!"11}
  5. 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!
  1. name ← Bo

    14fun main() {15    val name→ Bo = "Bo"16    val greeter = LoudGreeter()17    val message = greeter.greet(nameBo)
  2. 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!"
  3. open fun greet(name: String): String

    1open class Greeter {2    open fun greet(nameBo: String): String {3        return "Hello, $nameBo"4    }
  4. base ← Hello, Bo

    8override fun greet(name: String): String {9    val base→ Hello, Bo = super.greet(nameBo)10    return "$baseHello, Bo!"11}
  5. 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!
  1. name ← Cy

    14fun main() {15    val name→ Cy = "Cy"16    val greeter = LoudGreeter()17    val message = greeter.greet(nameCy)
  2. 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!"
  3. open fun greet(name: String): String

    1open class Greeter {2    open fun greet(nameCy: String): String {3        return "Hello, $nameCy"4    }
  4. base ← Hello, Cy

    8override fun greet(name: String): String {9    val base→ Hello, Cy = super.greet(nameCy)10    return "$baseHello, Cy!"11}
  5. 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!