PHP,OOP接口和抽象

时间:2012-05-23 12:49:11

标签: php oop interface abstract

  

可能重复:
  What is the difference between an interface and abstract class?

我读了一个关于界面和抽象之间差异的指南,但我不理解指南说: 为什么在我们可以使用抽象方法时使用完全接口, 答案是界面的使用不需要我们继承某些抽象类, 因此,两个不从同一个类继承的类可以包含类似的接口, 实际上使用接口允许我们不用冗余方法来扩充父类。 我真的想要了解它,但它没有注册,如果有人可以帮助我,我会非常感激。

2 个答案:

答案 0 :(得分:2)

关于何时使用接口和抽象类的一些建议(礼貌:MSDN)

1)如果您预计要创建组件的多个版本,请创建一个抽象类。抽象类提供了一种简单易用的组件版本。通过更新基类,所有继承类都会随更改自动更新。另一方面,接口一旦创建就无法更改。如果需要新版本的接口,则必须创建一个全新的接口。

2)如果您创建的功能在各种不同的对象中都有用,请使用界面。抽象类应主要用于密切相关的对象,而接口最适合为不相关的类提供通用功能。

3)如果您正在设计小巧,简洁的功能,请使用接口。如果要设计大型功能单元,请使用抽象类。

4)如果要在组件的所有实现中提供通用的实现功能,请使用抽象类。抽象类允许您部分实现您的类,而接口不包含任何成员的实现。

http://msdn.microsoft.com/en-us/library/scsyfw1d%28v=vs.71%29.aspx

答案 1 :(得分:1)

接口允许您基于几个不相关的类层次结构中的类似方法集合来获取多态性。这意味着您可以编写方法来使用一系列不必彼此相关的类中的任何一个。您还可以通过将多个接口应用于类来进行混合和匹配,因此该类可用于许多事情。

相比之下,抽象方法只允许您交替使用父类的直接后代,这可能是限制因为您不能拥有多个行为集合(因为类只能有一个父级)。