运行时不显示任何内容。 xdebug不运行。这个简单的例子不起作用。
ini_set("display_errors", 1);
error_reporting(E_ALL);
abstract class Hello
{
protected function hello();
}
class Helloworld extends Hello
{
public $world;
public function __construct($world){
$this->world = $world;
}
public function hello() {
echo 'Hello + '.$this->world;
}
}
class Hiotherworld extends Hello
{
public $world;
public function __construct($world){
$this->world = $world;
}
public function hello(){
echo 'Hi + '.$this->world;
}
}
$hello = new Helloworld("Earth");
$hello->hello();
$hi = new Hiotherworld("Mars");
$hi->hello();
答案 0 :(得分:2)
致命错误:非抽象方法Hello :: hello()必须包含body:
protected function hello();
答案 1 :(得分:1)
您无法更改子类中方法的可见性。您将hello()
声明为protected
,因此在子类中也必须为protected
。
我想你想在public
中将其声明为Hello
,因为受保护在这种情况下毫无意义。你错过了abstract
关键字(谢谢@rNix)你应该将$world
的声明移到基类:
最后Hello
应如下所示:
abstract class Hello
{
$protected $world;
abstract public function hello();
}
答案 2 :(得分:1)
改变它
abstract class Hello
{
protected function hello(){}
}
为我工作。