Quber
@Quber
PHP Team lead

Как заставить классы реализовать один и тот же метод от родительского класса?

Добрый день!

Допустим есть три класса. Один родительский и два дочерних.
Пример
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
  • Вопрос задан
  • 311 просмотров
Пригласить эксперта
Ответы на вопрос 3
<?php

class p {
	
	public $name = 'p';
	
	function getname(){
		return $this->name;	
	}
}

class c1 extends p {
	public $name = 'c1';	
}
class c2 extends p {
	public $name = 'c2';	
}

$p = new p;
$c1 = new c1;
$c2 = new c2;
echo $p->getname();
echo $c1->getname();
echo $c2->getname();


//pc1c2
Ответ написан
@heartdevil
плыву как воздушный шарик
Привет.

А родителя абстрактным сделать тоже нельзя?

К примеру:

abstract class Parent
{
    abstract public function getName()
    {
        return "Родитель";
    }
}

class Child1 extends Parent
{
    public function getName()
    {
        return "Дочерний 1";
    }
}

class Child2 extends Parent
{
    public function getName()
    {
        return "Дочерний 2";
    }
}
Ответ написан
inginer
@inginer
Веб - разработчик
Можно использовать traits?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы