oop — правильный способ использования полипорфизма в php?

Я новичок в объектно-ориентированном php. И если нет никаких функций в методе testing () в HumanClass, я должен объявить их абстрактными?

<?php
class HumanClass
{
private $legs;
private $hands;

public function __construct($legs, $hands)
{
$this->legs = $legs;
$this->hands = $hands;
}

public function testing()
{

}
}

class StudentClass extends HumanClass
{
private $books;public function __construct($legs, $hands, $books)
{
parent::__construct($legs, $hands);
$this->books = $books;
}public function testing()
{
echo "StudentClass called.";
}
}

function callClass(HumanClass $c)
{
$c->testing();
}

$example = new StudentClass(4, 2, 1);
callClass($a);
?>

Возможно ли иметь что-то подобное?

echo $a->testing();

вместо того, чтобы иметь другой метод для вызова testing ().

-1

Решение

Учитывая код, который вы даете, далеко не ясно, что должна делать функция testing (), а не просто существовать для того, чтобы вы что-то пробовали. Ответ на это также определит, должны ли версии в базовом классе оставаться там как пустая функция.

Есть и другие варианты, например, что производный класс сначала вызывает базовый класс (расширение) или что базовый класс не содержит абстрактную или конкретную такую ​​функцию, а только производный. Что выбрать, решать информированному программисту.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]