Назад к вопросам
Middle+
73
questionbank
Как в переопределяемом методе вызвать реализацию из интерфейса?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Напрямую вызвать реализацию метода из интерфейса (дефолтную реализацию) в переопределяемом методе класса нельзя.
Можно вызвать реализацию из суперкласса, если он реализует этот интерфейс, используя super.метод().
Пример:
interface MyInterface {
fun doSomething() {
// Дефолтная реализация
println("Default implementation")
}
}
open class BaseClass : MyInterface {
override fun doSomething() {
// Здесь нельзя вызвать MyInterface.super.doSomething()
println("Base implementation")
}
}
class DerivedClass : BaseClass() {
override fun doSomething() {
// Вызовется doSomething() из BaseClass
super.doSomething()
println("Derived implementation")
}
}
Если требуется получить доступ к дефолтной реализации из интерфейса, можно создать вспомогательную функцию в отдельном объекте или классе, которая будет принимать в качестве параметра объект интерфейса и вызывать его дефолтную реализацию. Но это не является прямым вызовом из переопределяемого метода.