Как заставить классы реализовать один и тот же метод от родительского класса? Добрый день! Допустим есть три класса. Один родительский и два дочерних. Пример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
Чтобы заставить все дочерние классы реализовывать один и тот же метод от родительского класса, можно использовать ключевое слово 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() из родительского класса, и код выше должен вернуть ожидаемый результат:
Чтобы заставить все дочерние классы реализовывать один и тот же метод от родительского класса, можно использовать ключевое слово 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