zoukankan      html  css  js  c++  java
  • 接口和抽象类的区别和联系

    • 接口

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

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

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

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

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

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

      

    
    
  • 相关阅读:
    C#基础概念二十五问
    Jpage分页 通用.net2.0分页程序
    使用ADO.net转换数据到Excel格式并提供下载
    .Net中FckEditor的配置和使用方法(含示例源码)
    利用Wildcard ISAPI Mapping隐藏扩展名[转]
    写简历最易犯五大愚蠢错误
    程序员35岁前成功的12条黄金法则
    目前较为流行的Ajax框架一览
    身份证的验证(支持15位与18位)
    使用ISAPI_Rewrite对asp.net实现URL重写伪静态
  • 原文地址:https://www.cnblogs.com/qwfy-y/p/11792539.html
Copyright © 2011-2022 走看看