我是面向对象的php的新手。如果HumanClass中的方法testing()中没有函数,我应该将它们声明为抽象吗?
<?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()。
答案 0 :(得分:0)
鉴于您提供的代码,我们很清楚test()函数应该做什么,而不仅仅是存在让您尝试。答案也将决定基类中的版本是否应作为空函数保留在那里。
还有其他选择,例如派生类首先调用基类(扩展),或者基类不包含抽象或具体的这样的函数,但只包含派生类。选择哪一项取决于知情程序员的决定。