Можно ли удовлетворить реализацию члена интерфейса, используя другой интерфейс в Kotlin? - PullRequest
0 голосов
/ 04 июля 2019

Например, если у меня есть такой интерфейс:

interface MyInterface {
    fun thouMustImplementThis()
}

И у меня есть класс MyClass, который реализует MyInterface, что означает, что я должен создать переопределение для функции:

class MyClass : View, MyInterface {
    override fun thouMustImplementThis() {
        println ("Hello world")
    }
}

Возможно ли, если у меня есть другой интерфейс, который реализует функцию:

interface YourInterface {
    fun thouMustImplementThis() {
        println ("Hello Stack Overflow")
    }
}

Так что я могу опустить реализацию из моего класса:

class MyClass : View, MyInterface, YourInterface {

}

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

class MyClass : View, MyInterface, YourInterface {

    override fun thouMustImplementThis() {
        super.thouMustImplementThis()
    }
}

а я этого не хочу.

Дело в том, что я хочу создать некую реализацию по умолчанию для некоторых нативных интерфейсов, чтобы мне не приходилось переопределять их каждый раз, когда я создаю класс на основе этих интерфейсов. Я думал, что, сделав его интерфейсом, я могу «прикрепить» реализацию так, как мне нужно. Есть ли обходной путь для этого?

1 Ответ

3 голосов
/ 04 июля 2019

Вы можете просто заставить интерфейс реализовать другой интерфейс.Например:

interface YourInterface : MyInterface {
    override fun thouMustImplementThis() {
        println("Hello Stack Overflow")
    }
}

Теперь класс может быть реализован следующим образом (тело не нужно):

class MyClass : View, YourInterface
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...