Predict the output
What does this print?
interface Greeter { fun hello(): String; fun bye(): String }
class Plain : Greeter {
override fun hello() = "hi"
override fun bye() = "bye"
}
class Loud(inner: Greeter) : Greeter by inner {
override fun hello() = "HI"
}
fun main() {
val g = Loud(Plain())
println(g.hello() + " " + g.bye())
}Hint 1 of 1
Which methods does by inner generate?
Choose an answer, then open Show answer below to check it.
Show answer
Answer: A HI bye
Correct. hello is overridden; bye is forwarded to the inner Greeter.
Why not the others?
- B hi bye. Loud overrides hello.
- C HI BYE. bye isn't overridden, so it's delegated.
- D It doesn't compile: bye isn't implemented. by inner generates the missing methods.