如何在PHP中的非抽象类中声明抽象方法?

2022-08-30 09:32:27
class absclass {
    abstract public function fuc();
}

报告:

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

我想知道通过实现其余的方法意味着什么,如何?


答案 1

请参阅 PHP 手册中有关类抽象的章节

PHP 5 引入了抽象类和方法。定义为抽象的类不能实例化,并且包含至少一个抽象方法的任何类也必须是抽象的。定义为抽象的方法只是声明方法的签名 - 它们不能定义实现。

这意味着你必须

abstract class absclass { // mark the entire class as abstract
    abstract public function fuc();
}

class absclass {
    public function fuc() { // implement the method body
        // which means it won't be abstract anymore
    };
}

答案 2

我假设其余方法实际上指的是您尝试定义的抽象方法(在本例中为 ),因为可能存在的非抽象方法无论如何都是可以的。这可能是一个可以使用更精确措辞的错误消息:如果它说剩余,它本来可以说抽象fuc()

修复非常简单(错误消息的这一部分很好):您需要更改以下内容:

abstract public function fuc();

...进入正确的实现:

public function fuc(){
    // Code comes here
}

...或者,或者,根据您的需要,使整个类抽象:

abstract class absclass {
    abstract public function fuc();
}

推荐