Abstract class extending other abstract class …

Нека имаме абсклас, който го наследяват други абскласове и т.н… демек, преставяме си една дървовидна структура от само абскласове.

Идеята ми е, ако абсклас наследява абсклас, трябва ли да му имплементира абсметодите, или това е задължително само за обикновените класове, които наследяват абскласа?

Отговор: НЕ

Може и да ги оставиш за последния – обикновения. Демек, да ги натрупаш за накрая и там да ги имплементираш.

Може и да ги имплементираш в наследника – абстрактния, а ако искаш евентуално – в обикновения да го оверрайднеш.

В наследяващият абстрактен клас, който наследява абстрактният си родител, можеш да имаш същият абстрактен метод, демек:

abstract class Klass
{
     abstract public function ala();
}

abstract class SubKlass extends Klass
{
     abstract public function ala();
}

Но в нормалният клас вече трябва да имаш имплементиран ala().

Абстрактните класове са „призраци“, те просто задължават обикновеният клас да ги имплементира. Иначе можеш да си ги оверрайдваш както си щеш.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *