2010-09-27 52 views

回答

1

一般:

接口应该在任何情况下使用,其中最重要的是阶级做什么,不一定是什么。例如,一个可以创建其自身副本的类可以做许多其他事情,但是当您只关心能够复制该对象时,您只关心该对象实现ICloneable。另外,当不共享一组功能的实现时,接口非常有用;例如,输出计算结果的能力可以是文件,控制台或网络的形式。这三个实现完全不同,但它们都可以看起来与需要IOutputWriter的类相同。

摘要通常用于共享代码。与接口不同,抽象类可以指定子级可以使用的方法逻辑。 BitmapImagePrinter专门用于位图文件类型,但它需要与JpegImagePrinter相同的逻辑来实际访问打印机;所以,这个逻辑可以进入AbstractImagePrinter。当一个班级比什么时候更重要时,摘要也很有用。 CheckingAccount和SavingsAccount都是BankAccounts,即使它们的行为不同。

还有一些其他的特殊情况,你必须使用其中一种,但总的来说,这是主要的区别。

0

有了你声明的行为,而不提供一个实现的接口。这是用作方法参数的最好方法,因为您依赖于行为,而不是依赖于给定的实现(即使是部分抽象类)。

抽象类最适合用作基类,提供了一组实现接口的类所使用的通用功能。我会建议把这个基本的抽象类作为一个内部的实现助手。

0

这已经被讨论多次指this -

,当你想通过所有的类继承的一些默认行为,因为它使更多的意义则使用抽象类实现抽象类。

实现接口,当你想只有一些你的类有一些特定的功能,而不需要它被继承。

相关问题