Назад к вопросам
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")
    }
}

Если требуется получить доступ к дефолтной реализации из интерфейса, можно создать вспомогательную функцию в отдельном объекте или классе, которая будет принимать в качестве параметра объект интерфейса и вызывать его дефолтную реализацию. Но это не является прямым вызовом из переопределяемого метода.