Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
interface Greeter {
fun name(): String
fun greet() = "Hi, ${name()}"
}
class Bot : Greeter {
override fun name() = "Bot"
}
fun main() {
val g: Greeter = Bot()
println(g.greet())
}Hi, Bot
- Ждать ошибки компиляции: считать, что класс обязан переопределить каждый метод интерфейса. Обязательны только методы без тела, а
greet()приходит готовым. - Ждать
Hi, name(): считать, что вызов внутри строки печатается как текст. В шаблоне строки${name()}выполняет вызов и подставляет то, что он вернул.
- Что выведет программа, если
Botпереопределит иgreet(), вернув"Beep"? - Может ли один класс реализовать сразу два интерфейса?