可能重复:
接口和抽象类有什么区别?
我阅读了关于接口和抽象之间区别的指南,但我不明白该指南说:为什么在我们可以使用抽象方法时使用完全接口,答案是接口的使用不需要我们从某个抽象类继承,因此,两个不继承自同一个类的类可以包含相似的接口,实际上使用接口允许我们不使用冗余方法膨胀父类。我真的很想理解它,但它没有注册,如果有人可以在这里帮助我,我将非常感激。
可能重复:
接口和抽象类有什么区别?
我阅读了关于接口和抽象之间区别的指南,但我不明白该指南说:为什么在我们可以使用抽象方法时使用完全接口,答案是接口的使用不需要我们从某个抽象类继承,因此,两个不继承自同一个类的类可以包含相似的接口,实际上使用接口允许我们不使用冗余方法膨胀父类。我真的很想理解它,但它没有注册,如果有人可以在这里帮助我,我将非常感激。
关于何时使用接口和抽象类的一些建议(礼貌:MSDN)
1) 如果您预期创建组件的多个版本,请创建一个抽象类。抽象类提供了一种简单易行的方式来对组件进行版本控制。通过更新基类,所有继承类都会随着更改而自动更新。另一方面,接口一旦创建就不能更改。如果需要新版本的接口,则必须创建一个全新的接口。
2)如果您正在创建的功能将在广泛的不同对象中有用,请使用接口。抽象类应该主要用于密切相关的对象,而接口最适合为不相关的类提供通用功能。
3)如果您正在设计小而简洁的功能,请使用接口。如果您正在设计大型功能单元,请使用抽象类。
4) 如果您想在组件的所有实现中提供通用的、已实现的功能,请使用抽象类。抽象类允许您部分实现您的类,而接口不包含任何成员的实现。
http://msdn.microsoft.com/en-us/library/scsyfw1d%28v=vs.71%29.aspx
接口允许您在多个不相关的类层次结构中基于相似的方法集合具有多态性。这意味着您可以编写一个方法来使用一系列不一定相互关联的类中的任何一个。您还可以通过将多个接口应用于一个类来混合和匹配,因此该类可以用于许多事情。
相比之下,抽象方法只允许您互换使用父类的直接后代,这可能会受到限制,因为您不能拥有多个行为集合(因为类只能有一个父类)。