Да, абстрактный класс может наследовать другой абстрактный класс:
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'; }
}Промежуточный абстрактный класс может реализовать часть абстрактных методов и добавить новые.