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属于飞机抽象类,鸽子属于鸟抽象类。

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

      

    
    
  • 相关阅读:
    免费的视频、音频转文本
    Errors are values
    Codebase Refactoring (with help from Go)
    Golang中的坑二
    Cleaner, more elegant, and wrong(msdn blog)
    Cleaner, more elegant, and wrong(翻译)
    Cleaner, more elegant, and harder to recognize(翻译)
    vue控制父子组件渲染顺序
    computed 和 watch 组合使用,监听数据全局数据状态
    webstorm破解方法
  • 原文地址:https://www.cnblogs.com/qwfy-y/p/11792539.html
Copyright © 2011-2022 走看看