抽象类需要什么?

Kar*_*hik 2 oop

他们最近问我的一个面试问题.

什么是C#中的抽象类?
抽象类 - 是一个无法实例化的类,可以包含抽象或实例方法,构造函数等.

实例方法可用于为继承此抽象类的所有派生类实现通用功能.

好的......现在的问题是为什么我们需要一个抽象类来实现通用功能.我可以在基类中使用相同的常用功能,让派生类可以访问基类方法.如果是这样的话,而不是有一个抽象类..我可以去基类?或者将通用功能放在抽象类中,让派生类可以访问这些方法吗?

如果我的基类可以解决常见功能的实现,那么为什么我们需要一个通用功能的抽象类?

在正确理解方面需要帮助....

Jon*_*eet 5

抽象类基类 - 但它是一个基类,通常有一些抽象成员.这允许您在抽象类中编写代码来调用那些抽象成员,但是没有任何实现......然后强制从抽象类派生的具体类来实现这些成员.

拥有抽象类而不仅仅是一些成员抛出NotImplementExceptions 的具体基类的好处是:

  • 派生类(在编译时)被强制实现相关成员
  • 客户端不能只创建基类的实例; 他们必须使用一个具体的类,提供适当的"缺失"成员.

作为一个例子,前几天我写了一个JsonConverter在Json.NET中扩展的抽象类类.其目的是,它是为我的项目中结构的任何转换器一个基类-它会处理所有可空类型转换(和反序列化JSON空为空值),让自由的派生类专注于类型-具体部分.看看它(NodaConverterBase),看它是否使事情更清楚.