zoukankan      html  css  js  c++  java
  • 接口 与 抽象类

     

     接口 VS 抽象类

      A. 相似之处

        1、不能实例化;
        2、包含未实现的方法声明;
        3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);

          4、在接口中增加一个成员,在抽象类中增加一个抽象方法,所有的继承了接口/抽象类的子类都必须实现这个成员/抽象方法;

        5、抽象类A可以继承抽象类B,接口C可以继承接口D。

               6、都可继承多个接口

      B. 不同之处

        1、接口定义类的公共行为,抽象类定义类的公共实现
        2、一个类只能继承自一个类(抽象类),但是可以同时实现多个接口;抽象类一般用于实现单继承,接口一般用于实现多继承;

        3、抽象类中可以包含的成员类型,只有方法、属性、索引器、事件可以被接口所包含;

        4、可以为抽象类中的成员添加“访问修饰符”,接口中的成员不能;
        5、接口中不能有实现,抽象类中可以有未实现成员也可以有实现的成员;

        6、接口中未实现的成员必须在子类中实现,抽象类中未实现的方法必须在子类中重写;

        7、如果在接口中增加一个成员,所有实现这个接口的类都必须实现这一成员,如果有很多个类继承了这个接口,就会增大工作量。如果在抽象类中增加一个可供子类继承,且不需要在子类中重写的东西(如,一个属性、一个函数),那么它所有的派生类都可以直接使用这个东西。

        8、抽象类A可以继承抽象类B,接口不能继承类,更不要说抽象类了。

        9、 接口可以继承多个接口,多重继承;而一个抽象类只能继承一个父类,且这个父类必须是抽象类。

     

  • 相关阅读:
    【BZOJ】【2661】【Beijing WC2012】连连看
    【BZOJ】【2424】【HAOI2010】订货
    【BZOJ】【1061】【NOI2008】志愿者招募
    【POJ】【3680】Intervals
    网络流建模
    【BZOJ】【1221】【HNOI2001】软件开发
    【BZOJ】【1877】【SDOI2009】晨跑
    bzoj2054: 疯狂的馒头(并查集)
    浴谷金秋线上集训营 T11738 伪神(树链剖分)
    51nod1967 路径定向(欧拉回路+结论题)
  • 原文地址:https://www.cnblogs.com/lcxBlog/p/4498296.html
Copyright © 2011-2022 走看看