为什么要使用抽象类

时间:2016-09-20 19:50:27

标签: php class oop

我一直在研究高级OOP的主题,我发现自己一遍又一遍地问一个问题......为什么在子类中定义所有方法时使用抽象类。不能在不引起问题的情况下独立于抽象类使用子类吗?

2 个答案:

答案 0 :(得分:0)

为什么要使用抽象类

有些人可能认为这是一个很好的解决方案,但抽象类有助于遵循DRY principle,而界面对此没有帮助。然而这需要付出代价(例如,基类实现中的更改可能会破坏扩展它的类),并且如果可能的话,您通常应该更喜欢使用接口。

在不引起问题的情况下,子类是否可以独立于抽象类使用?

扩展特定的前任使您能够使不同的类扩展它是可以互换的。

假设你需要一只任何类型的鸟。鸭子和母鸡都伸出一只鸟意味着你会接受母鸡和鸭子。你可能会说你只需要飞鸟,这意味着你不会再接受母鸡(jcan跳而不是飞),但会继续接受老鹰。但如果你说你需要一只鸭子 - 这意味着你需要一只鸭子,不会接受任何其他类型的鸟类。类扩展另一个类(抽象或非抽象)或接口的事实将允许您将它作为参数传递给期望基类实例的函数。

答案 1 :(得分:0)

当您需要在基类中实现某些东西时,可以使用抽象类,子类应该在同一个方法中实现另一个逻辑。例如,我们需要实现解析不同类型文件的服务:

  • 我们有一个基类,它设置文件名,存储数据到DB的方法和抽象方法 - 解析文件
  • 我们有XLS,XLSX和CSV文件的实现,它们对方法过程有不同的实现。

这是一个很好的解决方案。但这并不意味着你应该这样使用。您可以实现其中一个模式或根本不使用OOP。这只是一种如何实现逻辑的方法。