Я новичок в объектно-ориентированном 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 ().
Учитывая код, который вы даете, далеко не ясно, что должна делать функция testing (), а не просто существовать для того, чтобы вы что-то пробовали. Ответ на это также определит, должны ли версии в базовом классе оставаться там как пустая функция.
Есть и другие варианты, например, что производный класс сначала вызывает базовый класс (расширение) или что базовый класс не содержит абстрактную или конкретную такую функцию, а только производный. Что выбрать, решать информированному программисту.
Других решений пока нет …