zoukankan      html  css  js  c++  java
  • 接口和抽象类的对比

    相同点:

    1、都是抽象类型。

    2、都可以有实现方法;

    3、都可以不需要实现类或者继承者去实现所有方法。

    4、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

    5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个类实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。(以前是)

    不同点:

    1、抽象类不可以多重继承,接口可以(接口和抽象类相比,最大的区别就在于子类上,接口的子类可以同时实现多个接口,但抽象类的子类只能实现单根继)。

    2、抽象类要被子类继承,接口要被类实现。

    3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量

    4、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

      

      抽象类里可以没有抽象方法

      如果一个类里有抽象方法,那么这个类只能是抽象类

      抽象方法要被实现,所以不能是静态的,也不能是私有的。

      特别是对于公用的实现代码,抽象类有它的优点。抽象类能够保证实现的层次关系,避免代码重复。然而,即使在使用抽 象类的场合,也不要忽视通过接口定义行为模型的原则。从实践的角度来看,如果依赖于抽象类来定义行为,往往导致过于复杂的继承关系,而通过接口定义行为能够更有效地分离行为与实现,为代码的维护和修改带来方便。

  • 相关阅读:
    CCF CSP 题解
    CCF CSP 2019032 二十四点
    CCF CSP 2018121 小明上学
    CCF CSP 2019092 小明种苹果(续)
    CCF CSP 2019091 小明种苹果
    CCF CSP 2019121 报数
    CCF CSP 2019031 小中大
    CCF CSP 2020061 线性分类器
    CCF CSP 2020062 稀疏向量
    利用国家气象局的webservice查询天气预报(转载)
  • 原文地址:https://www.cnblogs.com/Hellorxh/p/10862003.html
Copyright © 2011-2022 走看看