可能重复:
Abstract classes vs Interfaces
Abstract class and Interface class?
大家好, 关于抽象类和接口的使用我有点困惑, 当我们需要实现抽象类和接口时。
由于 Vijendra Singh
答案 0 :(得分:1)
一般来说:
接口应该用于任何重要的类是什么的情况,不一定是什么。例如,可以创建自身副本的类可以执行许多其他操作,但是当您只关心能够复制对象时,您只关心该对象实现ICloneable。此外,当不共享一组功能的实现时,接口很有用;例如,输出计算结果的能力可以是文件,控制台或网络的形式。这三个实现完全不同,但它们对于需要IOutputWriter的类看起来都是一样的。
摘要通常用于共享代码。与接口不同,抽象类可以指定其子项可以使用的方法逻辑。 BitmapImagePrinter专门用于Bitmap文件类型,但它需要与JpegImagePrinter相同的逻辑来实际访问打印机;所以,那个逻辑可以放在AbstractImagePrinter中。当课程比课程更重要时,摘要也很有用。 CheckingAccount和SavingsAccount都是BankAccounts,即使它们的行为不同。
还有一些其他特殊情况,你必须使用其中一个,但总的来说,这是主要的区别。
答案 1 :(得分:0)
使用接口,您可以在不提供实现的情况下声明行为。这是用作方法参数的最佳方法,因为您依赖于行为,而不是给定的实现(甚至部分使用抽象类)。
抽象类最好用作基类,提供一组实现接口的许多类所使用的通用功能。我建议将此基本抽象类视为内部实现帮助程序。
答案 2 :(得分:0)
这已经多次讨论过this -
当您希望所有类继承某些默认行为时,实现抽象类,因为使用抽象类更有意义。
当您希望仅为某些类具有某些特定功能并且不需要继承它时,实现接口。