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

时间:2017-05-28 16:48:20

标签: php

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

为什么?

2 个答案:

答案 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