Вступить в клуб →
средняявопросKotlin: классы, коллекции и идиомы

Функция-расширение для наследника не вызывается через переменную базового типа

open class Payment
class CardPayment : Payment()

fun Payment.label() = "Оплата"
fun CardPayment.label() = "Картой"

val payment: Payment = CardPayment()
println(payment.label())

Что напечатает код?

  • Оплата
  • Картой
  • Ошибка компиляции: два расширения label
  • Ошибка выполнения: неоднозначный вызов

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела