关于c#:当我们需要实现抽象类和接口时

when we need to implement abastract class and when Interface

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
Abstract classes vs Interfaces
Abstract class and Interface class?

嗨,大家好,我对抽象类和接口的使用有点困惑,当我们需要实现抽象类和接口时。

谢谢维琴德拉辛格


一般来说:

接口应该在任何情况下使用,在这种情况下,最重要的是类的功能,而不一定是它的功能。例如,可以创建自身副本的类可以执行许多其他操作,但当您只关心能够复制对象时,您只关心对象实现了可克隆性。此外,当一组功能的实现不共享时,接口也很有用;例如,输出计算结果的能力可以是文件、控制台或网络形式。这三个实现是完全不同的,但是对于需要IOutputWriter的类,它们都可以看起来相同。

摘要通常用于共享代码。与接口不同,抽象类可以指定其子类可以使用的方法逻辑。BitmapImagePrinter专门用于位图文件类型,但它需要与jpegimageprinter相同的逻辑来实际访问打印机;因此,该逻辑可以进入AbstractImageprinter。当类的内容比它所做的更重要时,抽象也很有用。支票账户和储蓄账户都是银行账户,尽管它们的行为不同。

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


已经多次讨论过了,请参考-

Implement Abstract Classes when you want some default behaviour to be inherited by all the classes as it makes more sense then to use abstract classes.

Implement Interfaces when you want to have some specific functionality for only some your classes and dont need it to be inherited.


通过接口,您可以声明一个行为而不提供实现。这是最好的方法参数,因为您依赖于行为,而不是给定的实现(甚至部分使用抽象类)。

例如,抽象类最好用作一个基类,它提供了许多实现接口的类所使用的一组公共功能。我建议将这个基本抽象类视为内部实现助手。