我们可以在 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
在方法方面会有什么或属性,所以它毫无意义。
我想知道我们是否可以在 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
在方法方面会有什么或属性,所以它毫无意义。