致命错误:类 xxx 包含 1 个抽象方法,因此必须声明为抽象或实现其余方法



我学习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();

现在我有错误:

致命错误:类保护维斯包含 1 个抽象方法,必须 因此被声明为抽象或实现其余方法 (ProtectVis::countMoney( in

为什么?

根据 OOP 原则,每个包含至少一个抽象方法的类也被认为是抽象的。来自 PHP 手册:

定义为抽象的类不能实例化,并且包含至少一个抽象方法的任何类也必须是抽象的。

所以你应该改变

class ProtectVis

abstract class ProtectVis

为 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";
        }
    }

最新更新