Ответ
В Java/Kotlin класс может реализовывать неограниченное количество интерфейсов, но наследовать только один класс (одиночное наследование).
Пример в Kotlin:
interface A
interface B
interface C
class MyClass : A, B, C { // Реализуем 3 интерфейса
// ...
}
Ключевые моменты:
- Интерфейсы поддерживают множественное "наследование"
- Все методы интерфейсов должны быть реализованы
- При конфликте сигнатур методов нужно явно указать реализацию через
super<Interface>.method()
Ответ 18+ 🔞
Ну слушай, тут такая история, как в том анекдоте про мужика и трёх тещ. В Java с Kotlin класс — это как тот самый мужик. Он может хренову тучу интерфейсов реализовать, хоть двадцать штук, это не проблема. Но вот родитель-класс у него может быть только один, и всё тут. Одиночное наследование, ёпта, закон такой. Как будто отец — он один, а вот дядек и крестных — хоть овердохуища.
Смотри, как это выглядит в Kotlin, чтоб совсем понятно было:
interface A // Первый дядя с советами
interface B // Второй дядя, который вечно бухтит
interface C // Третий, который просто за сигаретами зашёл
class MyClass : A, B, C { // А это наш класс-мужик, который всех их должен слушать
// ...
}
Вот и вся магия. Но подвох, конечно, есть, куда ж без него. Главные правила, которые надо помнить, а то доверия ебать ноль ко всем этим интерфейсам:
- Множественное наследование — да, но только для интерфейсов. Это как взять лучшие черты от всех, но фамилию оставить одну.
- Все методы, которые эти интерфейсы обещают, ты обязан реализовать. Нельзя сказать "ой, простите, забыл". Иначе компилятор тебе такое впендюрит, мало не покажется.
- А вот если случится конфликт — например, два дяди (интерфейса) научат тебя одному и тому же, но по-разному (
fun doSomething()), то тут надо голову включить. Придётся явно указать, чей именно совет ты выполняешь, черезsuper<Interface>.method(). Иначе сам от себя охуеешь, когда программа запутается.
Короче, интерфейсы — это сила, но и ответственность. Можно собрать себя, как франкенштейна, из кусочков, но чтобы это не превратилось в пиздопроебибну, надо внимательно за всем следить.