Да, абстрактный класс может наследоваться от другого абстрактного класса. Это валидный и часто используемый паттерн в объектно-ориентированном программировании.
Когда абстрактный класс наследуется от другого абстрактного класса, он не обязан реализовывать абстрактные методы родительского класса. Ответственность за реализацию этих методов переносится на первый конкретный (неабстрактный) подкласс в иерархии наследования.
Только финальный неабстрактный класс в цепочке наследования должен предоставить реализации для всех унаследованных абстрактных методов. Любые абстрактные классы между ними могут:
Абстрактный класс A (определяет abstractMethod1())
↓
Абстрактный класс B extends A (может не реализовывать abstractMethod1())
↓
Конкретный класс C extends B (ДОЛЖЕН реализовать abstractMethod1())
Такой иерархический подход позволяет строить сложные слои абстракции, где каждый уровень добавляет свои контракты и при этом перекладывает полную реализацию на конкретные классы.
Абстрактный класс, который расширяет другой абстрактный класс, должен реализовать все унаследованные абстрактные методы, прежде чем он сможет использоваться как родительский класс.
Новый — ещё не проверен сообществом
Вы