接口和抽象类的区别和联系

  • 接口

  (1) 接口不能被实例化
  (2) 接口只能包含方法声明
  (3) 接口的成员包括方法、属性、索引器、事件
  (4) 接口中不能包含常量、字段(域)、构造函数、析构函数、静态成员
  (5) 接口中的全部成员默认为public,所以接口中不能有private修饰符
  (6) 派生类必须实现接口的全部成员
  (7) 一个类能够直接实现多个接口,接口之间用逗号隔开
  (8) 一个接口能够有多个父接口,实现该接口的类必须实现全部父接口中的全部成员
  •  抽象类

  (1) 抽象方法只做声明,而不包含实现,能够当作是没有实现体的虚方法
  (2) 抽象类不能被实例化
  (3) 抽象类能够但不是必须有抽象属性和抽象方法,可是一旦有了抽象方法,就必定要把这个类声明为抽象类
  (4) 具体派生类必须覆盖基类的抽象方法
  (5) 抽象派生类能够覆盖基类的抽象方法,也能够不覆盖。若是不覆盖,则其具体派生类必须覆盖它们。
  •  相同点

  (1) 均可以被继承
  (2) 都不能被实例化
  (3) 均可以包含方法声明
  (4) 派生类必须实现未实现的方法
  •  区别

   1.接口规定了你能作什么,而抽象类定义了你是什么。函数

   2. ① 飞机会飞,鸟会飞,他们都继承了同一个接口“飞”;可是F22属于飞机抽象类,鸽子属于鸟抽象类。继承

    ② 就像铁门木门都是门(抽象类),你想要个门我给不了(不能实例化),但我能够给你个具体的铁门或木门(多态);并且只能是门,你不能说它是窗(单继承);一个门能够有锁(接口)也能够有门铃(多实现)。 门(抽象类)定义了你是什么,接口(锁)规定了你能作什么(一个接口最好只能作一件事,你不能要求锁也能发出声音吧(接口污染))。索引

相关文章
相关标签/搜索