抽象类与接口

一、抽象类的特点

  • 使用extends 关键字
  • 抽象类是由子类具有相同的一类特征抽象而来,也可以说是其基类或父类
  • 抽象方法必须为public或protected,默认为public
  • 抽象类不能用来创建对象
  • 抽象方法必须由子类来实现
  • 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法;如果子类没有实现父类的抽象方法,则必须将子类也定义为抽象类

二、接口的特点

  • 使用implements关键字
  • 接口中所有方法访问权限自动被声明为public
  • 实现接口的非抽象类必须实现接口中所有方法
  • 接口不能创建对象,但可以声明一个接口变量,方便调用
  • Java为保证数据安全性不支持多继承,一个类只能有一个父类但可以同时实现多个接口,弥补了抽象类不能多继承的缺陷

三、抽象类和接口区别

  1. 抽象层次不同
    抽象类是对整个类整体进行抽象,包括属性、行为;接口对类局部行为进行抽象

  2. 跨域不同
    抽象类所跨域的是具有相似特点的类;接口可以跨域不同的类

    抽象类体现继承关系,考虑的是子类和父类“是不是”同一类的关系;接口不要求实现的类与接口是同一本质,它们之间只存在“有没有这个能力”的关系

  3. 设计层次不同
    抽象类是自下而上的设计,在子类中重复出现的工作,抽象到抽象类中;接口是自上而下,定义行为和规范

powered by Gitbook最后修订时间: 2020-05-14 14:33:38

results matching ""

    No results matching ""