确切使用Abstract类

时间:2008-10-27 05:11:14

标签: c# abstract-class

Abstract类的确切用法是什么?在普通的类中是不可能做同样的事情,因为它是一个抽象类?

4 个答案:

答案 0 :(得分:24)

使用抽象类提供一些具体实现但不允许实例化。如果它不能独立存在,你总是可以实例化一个没有意义的普通类。同时,如果在所有实现类中都有相同的具体实现,那么接口可能还不够。一个抽象类就足够了。

  • 接口:仅合同,无实施,无实例化
  • 抽象类:契约,一些实现,没有实例化
  • 类:合同,实施,实例化

答案 1 :(得分:19)

当您有一些希望子类继承的基本功能时,会使用抽象类,但实例化基类是没有意义的。例如,如果你有一个像Shape基类的东西,你可以有一些内置的实现,子类可以使用它们以及你希望子类实现的接口方法。但是,创建Shape对象可能没有意义。抽象类为您提供此功能。抽象类使用的另一个很好的例子是abstract factory pattern

答案 2 :(得分:5)

常规课程要求您提供所有方法的实施 接口要求您为所有方法提供任何实现。

抽象类是唯一允许您拥有包含实现的方法的类,并且具有不提供实现的方法,但需要继承类来提供实现。

您可以在没有实现的情况下添加方法,这是您无法实例化抽象类的原因:您只能实例化具有其所有方法实现的内容。

答案 3 :(得分:1)

与常规类不同,abstract类可以包含abstract个方法。它们的行为很像界面成员。

同时,他们可以做普通类可以做的其他事情:他们可以实现方法,包含字段和&嵌套类型,派生自另一个类等。