Приведи пример когда наследуемый класс не может выполнять поведение класса родителя

«Приведи пример когда наследуемый класс не может выполнять поведение класса родителя» — вопрос из категории ООП, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Наследуемый класс не может выполнять поведение родителя, если родительский класс объявлен как 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") }
}