抽象类、接口的区别

来源:互联网 发布:淘宝一元秒杀 编辑:程序博客网 时间:2024/05/01 08:25

抽象类、接口的区别

  抽象类里面可以有非抽象的方法,接口里只能有抽象方法。

  抽象类中的抽象方法声明时不能有大括号,而接口中的所有方法都没有大括号。

抽象类(abstract class):

  a.抽象类是仅供派生的类,无法实例化一个抽象类,只能实例化从它派生的类。

  b.抽象类的主要特征在于它包含抽象成员(abstract member),抽象成员是不具有实现的一个方法或属性,其作用是强制所有派生类提供实现。

  c.由于抽象成员应当是要被重写(override)的,因此这类成员会自动成为virtual成员,而且不能这样显示地声明。

  d.抽象成员不能是private的,否则派生类看不见他们。

接口(interface):

  a.接口是抽象类的变体。

  b.接口的一个关键特征是它既不包含实现,也不包含数据。

  c.字段(也就是数据)不能出现在一个接口中,如果一个接口要求派生类包含特定的数据,那么它会使用属性而不是字段。由于属性不会包含任何实现作为接口声明的一部分,所以他不会引用一个支持字段。

  d.接口的宗旨是定义由多个类共同遵守的一个契约,所以接口中所有成员都必须为public类型。

0 0