Можно ли создать цепочку наследования между абстрактными классами?

Ответ

Да, абстрактный класс может наследовать другой абстрактный класс:

abstract class Animal {
    abstract public function speak(): string;
    public function breathe(): string { return 'breathing'; }
}

abstract class Pet extends Animal {
    abstract public function getName(): string;
    // speak() все еще абстрактный
}

class Dog extends Pet {
    public function speak(): string { return 'Woof!'; }
    public function getName(): string { return 'Rex'; }
}

Промежуточный абстрактный класс может реализовать часть абстрактных методов и добавить новые.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.