抽象类和接口的区别

抽象类 - 单继承

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

接口 - 多实现

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

二者区别

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

以上。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容