Ответ
Наследуемый класс не может выполнять поведение родителя, если родительский класс объявлен как sealed или final (в Kotlin/Java соответственно), что запрещает наследование. Также если родительский класс имеет приватные методы/поля, дочерний класс не сможет их переопределить или использовать напрямую.
Пример с final классом в Java:
final class Parent {
void doSomething() {
System.out.println("Parent action");
}
}
// Ошибка компиляции - нельзя наследовать final класс
class Child extends Parent {
@Override
void doSomething() {
System.out.println("Child action");
}
}
В Kotlin аналогично с sealed классом:
sealed class Parent {
open fun doSomething() { println("Parent") }
}
// Ошибка - разрешены только классы внутри sealed класса
class Child : Parent() {
override fun doSomething() { println("Child") }
}