美文网首页
抽象类和接口的区别

抽象类和接口的区别

作者: Joseph_L | 来源:发表于2018-02-28 17:49 被阅读38次

    抽象类 - 单继承

    • 关键字为abstract, extends, 被类所继承
    • 不可以被final修饰
    • 抽象方法不可以被private修饰,但其他三个不受限制
    • 抽象方法一定存在于抽象类中,但是抽象类中不一定有抽象方法
    • 抽象类的子类必须全部重写抽象方法,如果只重写部分抽象方法,则该子类同样为抽象方法
    • 抽象类中不一定全部都是抽象方法,方法可以有方法体
    • 抽象类不可以实例化对象
    • 抽象类可以实现接口,因为接口的内容也都是抽象的

    接口 - 多实现

    • 关键字为interface, implements, 被类所实现
    • 同样不可以被final修饰
    • 接口只允许三种成员存在:
      1. 公共的静态常量 public final static
      2. 公共的抽象方法 public abstract
      3. 静态内部类 static class
    • 由上可知,接口的作用域必须为public
    • 接口的抽象方法也必须全部被实现类所重写,否则实现类为抽象类
    • 不同的接口之间为继承关系,而且可以多继承
    • 接口不可以实例化对象
    • 接口不可以继承抽象类,因为抽象类中有可能存在非抽象方法,与接口的概念相悖

    二者区别

    • 每个类只能继承一个抽象类,但是可以实现多个接口
    • 抽象类可以有非抽象方法,接口全部为抽象方法
    • 从作用域角度看,抽象类中抽象方法不能为private,而接口强制为public abstract
    • 抽象类可以实现接口,但是接口不能继承抽象类
    • 不同的接口可以多继承,但是不同的抽象类只能单继承

    以上。

    相关文章

      网友评论

          本文标题:抽象类和接口的区别

          本文链接:https://www.haomeiwen.com/subject/bylixftx.html