我们可以在 php 中创建没有抽象方法的抽象 class 吗?

Can we create abstract class without abstract method in php?

我想知道我们是否可以在 php 中创建一个没有抽象方法的抽象 class 。

如果是,那么 class 是如何被称为 'Abstract Class' 的,因为它不包含任何抽象方法?此外,它是standard/supporting代码实践吗?

如果不是,原因是什么?

抽象class可以只包含抽象方法,没有更多的普通方法吗?

注意:我想要一些可用的合适代码示例的答案。答案应仅针对 PHP 语言。

抽象 class 是一个 class,不能实例化,必须由子 classes 扩展。抽象 class 中的任何抽象方法都必须由扩展子 class 实现(或者它也必须是抽象的)。 可能有一个抽象class而没有要实现的抽象方法;但这不是特别有用。

abstract的要点class是你可以预先定义接口,而把实现留给别人。然后,您可以使用该抽象接口并确保它按预期工作,而无需提前知道具体实现是什么:

abstract class Foo {
    abstract public function bar();
}

function baz(Foo $foo) {
    echo $foo->bar();
}

baz 可以完全取决于 $foo 的外观,而不知道它是如何实现的。

拥有一个没有任何抽象方法的抽象 class 允许您输入提示 Foo,但是您仍然不知道 $foo 在方法方面会有什么或属性,所以它毫无意义。