0

我已经搜索了几个小时在 php 中使用抽象类而不是非抽象类的优势。我知道抽象类不能被实例化,这是单例设计模式的一个很好的特点。但我的观点是,既然它们都可以作为基类,那么还有其他理由使用抽象类吗?所有像这样的答案如果我在 php 中使用抽象类有什么好处?我发现没有提到这个,他们只是回答了另一个问题,即使用基类有什么好处?所以,我的问题是,除了不能实例化之外,还有什么理由使用普通基类以外的抽象基类?

4

1 回答 1

1

抽象类不能直接实例化,但它可以包含抽象方法和非抽象方法。

如果你扩展一个抽象类,你必须要么实现它的所有抽象函数,要么使子类抽象。

您不能覆盖常规方法并使其抽象,但您必须(最终)覆盖所有抽象方法并使它们非抽象。

抽象关键字用于将类或方法标记为模式。它类似于接口,但可以包含变量和方法的实现。

关于抽象类有很多误解。这是一个抽象 Dog 类的示例。如果开发人员想为其他开发人员创建一些基本的 Dog 类或为自己扩展,他将类声明为抽象类。您不能直接实例化 Dog 类(没有人可以),但您可以通过自己的类扩展 Dog。SmartDog 扩展了 Dog 等。

所有被 Dog 类声明为抽象的方法都必须在每个扩展 Dog 的类中手动实现。

例如,抽象class Dog有一个抽象方法Dog::Bark()。但是所有的狗叫声都不一样。因此,在每个 Dog 子类中,您必须具体描述狗叫的方式,因此您必须定义 eg SmartDog::Bark()

于 2013-10-09T09:05:44.517 回答