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

时间:2017-11-24 10:44:07

标签: php class abstract-class abstract-methods

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

如果是,那么该类如何被称为“抽象类”,因为它不包含任何抽象方法?此外,它是标准/支持代码实践吗?

如果不是,背后的原因是什么?

抽象类只能包含抽象方法,不能再使用常规方法吗?

注意:我希望得到一些合适的代码示例。答案应仅针对PHP语言。

1 个答案:

答案 0 :(得分:1)

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

抽象类的要点是您可以提前定义接口,但将实现保留给其他人。然后,您可以使用该抽象接口,并确保它可以按预期工作,而不事先知道具体实现将是什么:

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

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

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

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