可能重复:
Abstract classes vs Interfaces
Abstract class and Interface class?当我们需要实现abastract类,并在接口
大家好, 我对使用抽象类的有点混乱和Interface, 当我们需要实现抽象类和Interface时。
感谢 Vijendra辛格
可能重复:
Abstract classes vs Interfaces
Abstract class and Interface class?当我们需要实现abastract类,并在接口
大家好, 我对使用抽象类的有点混乱和Interface, 当我们需要实现抽象类和Interface时。
感谢 Vijendra辛格
一般:
接口应该在任何情况下使用,其中最重要的是阶级做什么,不一定是什么。例如,一个可以创建其自身副本的类可以做许多其他事情,但是当您只关心能够复制该对象时,您只关心该对象实现ICloneable。另外,当不共享一组功能的实现时,接口非常有用;例如,输出计算结果的能力可以是文件,控制台或网络的形式。这三个实现完全不同,但它们都可以看起来与需要IOutputWriter的类相同。
摘要通常用于共享代码。与接口不同,抽象类可以指定子级可以使用的方法逻辑。 BitmapImagePrinter专门用于位图文件类型,但它需要与JpegImagePrinter相同的逻辑来实际访问打印机;所以,这个逻辑可以进入AbstractImagePrinter。当一个班级比什么时候更重要时,摘要也很有用。 CheckingAccount和SavingsAccount都是BankAccounts,即使它们的行为不同。
还有一些其他的特殊情况,你必须使用其中一种,但总的来说,这是主要的区别。
有了你声明的行为,而不提供一个实现的接口。这是用作方法参数的最好方法,因为您依赖于行为,而不是依赖于给定的实现(即使是部分抽象类)。
抽象类最适合用作基类,提供了一组实现接口的类所使用的通用功能。我会建议把这个基本的抽象类作为一个内部的实现助手。
这已经被讨论多次指this -
,当你想通过所有的类继承的一些默认行为,因为它使更多的意义则使用抽象类实现抽象类。
实现接口,当你想只有一些你的类有一些特定的功能,而不需要它被继承。
http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo – 2010-09-27 20:52:45