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

pih*_*oni 7 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();
Run Code Online (Sandbox Code Playgroud)

现在我有错误:

致命错误:类 ProtectVis 包含 1 个抽象方法,因此必须将其声明为抽象方法或实现以下中的其余方法 (ProtectVis::countMoney)

为什么?

小智 7

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

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

所以你应该改变

class ProtectVis
Run Code Online (Sandbox Code Playgroud)

abstract class ProtectVis
Run Code Online (Sandbox Code Playgroud)