抽象类的用途是什么?
2022-08-31 01:01:41
我正在尝试在PHP中学习OOP,我对接口和抽象类有些困惑。它们都不包含任何实现,只包含定义,并且应该通过其子类实现。抽象类的哪个部分清楚地将它们与接口区分开来?此外,由于它们明显的相似之处,基于什么原因我应该决定使用一个而不是另一个?
我正在尝试在PHP中学习OOP,我对接口和抽象类有些困惑。它们都不包含任何实现,只包含定义,并且应该通过其子类实现。抽象类的哪个部分清楚地将它们与接口区分开来?此外,由于它们明显的相似之处,基于什么原因我应该决定使用一个而不是另一个?
可以创建包含具体成员(如方法或属性)的抽象类。您仍然无法直接实例化抽象类,但任何实例化的子类都可以从抽象类中定义的实现成员中受益。
相比之下,接口从不包含任何实现逻辑。这取决于每个实现类,以提供接口中定义的所有成员的实现。
就我如何看待差异而言,抽象的子类就是该类型的类。例如: 是一个 .我把界面看作是一种关系。例如: 告诉我,实现类可以显示图像,但不会告诉我该类实际表示的内容。Dog
Animal
ICanDisplayImages
抽象
类在自身和子类之间形成 is-a 关系,而接口
创建 follow-a 关系。因此,抽象类比接口更具体,它们还可能包含具体的实现(例如模板方法),而接口定义了实现类必须遵循的一组契约方法。这是一个更高的抽象级别,因为实现类不一定是抽象类。使用它来标准化您的 API。
相关问题: https://stackoverflow.com/search?q=abstract+vs+interface