我学习PHP并遇到问题:
<?php
class ProtectVis
{
abstract protected function countMoney();
protected $wage;
protected function setHourly($hourly)
{
$money = $hourly;
return $money;
}
}
class ConcreteProtect extends ProtectVis
{
function __construct()
{
$this->countMoney();
}
protected function countMoney()
{
echo "ok";
}
}
$worker = new ConcreteProtect();
现在我有错误:
致命错误:类ProtectVis包含1个抽象方法,必须 因此,应宣布抽象或实施其余方法
中的(ProtectVis :: countMoney)
为什么?
答案 0 :(得分:0)
为ProtectVis声明抽象类,因为您使用的是抽象方法
<?php
abstract class ProtectVis
{
abstract protected function countMoney();
protected $wage;
protected function setHourly($hourly)
{
$money = $hourly;
return $money;
}
}
class ConcreteProtect extends ProtectVis
{
function __construct()
{
$this->countMoney();
}
protected function countMoney()
{
echo "ok";
}
}
答案 1 :(得分:0)
根据OOP原则,每个包含至少一个抽象方法的类也被认为是抽象的。从PHP手册:
定义为abstract的类可能无法实例化,任何包含至少一个抽象方法的类也必须是抽象的。
所以你应该改变
class ProtectVis
与
abstract class ProtectVis