Как заставить классы реализовать один и тот же метод от родительского класса? Добрый день!
Допустим есть три класса. Один родительский и два дочерних.
Примерclass Parent
{
public function getName()
{
return "Родитель";
}
}
class Child1 extends Parent
{
public function getName()
{
return "Дочерний 1";
}
}
class Child2 extends Parent
{
public function getName()
{
return "Дочерний 2";
}
}
Необходимо чтобы каждый вновь создаваемый дочерний класс реализовывал один метод, допустим getName(). При чём главное условие в том, что дочерний класс не должен имплементировать никакой интерфейс и родительский класс должен иметь этот же метод getName(), что и дочерние.
Должно получиться так:echo $parent->getName();
echo $child1->getName();
echo $child2->getName();
// Родитель
// Дочерний 1
// Дочерний 2

21 Авг 2019 в 07:06
222 +1
0
Ответы
1

Чтобы заставить все дочерние классы реализовывать один и тот же метод от родительского класса, можно использовать ключевое слово abstract в описании метода в родительском классе. Также необходимо объявить класс Parent как абстрактный.

Пример кода:

abstract class ParentClass
{
abstract public function getName();
}
class Child1 extends ParentClass
{
public function getName()
{
return "Дочерний 1";
}
}
class Child2 extends ParentClass
{
public function getName()
{
return "Дочерний 2";
}
}
$parent = new ParentClass;
$child1 = new Child1;
$child2 = new Child2;
echo $parent->getName();
echo $child1->getName();
echo $child2->getName();

Теперь все дочерние классы должны будут реализовать метод getName() из родительского класса, и код выше должен вернуть ожидаемый результат:

// Родитель
// Дочерний 1
// Дочерний 2
20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир