我想知道我们是否可以在php中创建一个没有抽象方法的抽象类。
如果是,那么该类如何被称为“抽象类”,因为它不包含任何抽象方法?此外,它是标准/支持代码实践吗?
如果不是,背后的原因是什么?
抽象类只能包含抽象方法,不能再使用常规方法吗?
注意:我希望得到一些合适的代码示例。答案应仅针对PHP语言。
答案 0 :(得分:1)
抽象类是一个无法实例化的类,必须由子类扩展。抽象类中的任何抽象方法都必须由扩展子类实现(或者它也必须是抽象的)。 可能有一个抽象类,没有抽象方法可以实现;但这并不是特别有用。
抽象类的要点是您可以提前定义接口,但将实现保留给其他人。然后,您可以使用该抽象接口,并确保它可以按预期工作,而不事先知道具体实现将是什么:
abstract class Foo {
abstract public function bar();
}
function baz(Foo $foo) {
echo $foo->bar();
}
baz
可以完全取决于$foo
的样子,而不知道它是如何完全实现的。
拥有一个没有任何抽象方法的抽象类允许你输入提示Foo
,但是你仍然不知道$foo
在方法或属性方面会有什么,所以它是相当的没有意义的。