JavaSe基础---抽象类

# 抽象类

  • (1)当一个类的某个操作方法没法具体实现时,这个操作可以定义为抽象方法。抽象方法使用 abstract 修饰,只有方法的声明部分,没有方法体。

  • (2)含有抽象方法的类必须定义为抽象类。

  • (3)使用 abstract 修饰的方法为抽象方法,只有方法声明没有方法体。

  • (4)含有抽象方法的类必须定义为抽象类,但是抽象类中不一定抽象方法。

  • (5)抽象类是一种引用数据类型,可以定义变量,但是抽象类不能实例化对象。

  • (6)抽象类肯定含有构造方法,子类创建对象时调用子类构造方法,子类构造方法体执行前会先执行父类的构造方法。

  • (7)abstract 与 final 不能同时使用。

  • Java 抽象类与接口的异同点

    • 相同点
      - 1. 都可以定义抽象方法
      - 2. 都不能实例化对象
      - 3. 接口 / 抽象类的抽象方法都需要被重写
      - 4. 接口 / 抽象类中都可以定义 public static final 字段,public static 静态方法
    • 不同点
      - 1. 意义不同
      • 抽象类对类进行更高层级的抽象,接口是对功能的封装
    -   2.定义方式不同
        -   抽象类使用 abstract class定义,接口使用interface定义
    -   3.内容不同
        -   抽象类中除了可以定义抽象方法外, 还可以定义实例变量/实例方法/静态变量/静态方法,构造方法等普通类所有的成员。
        -   接口中除了抽象方法外, 还可以定义public static final字段, public static方法,public default方法 。
        -   抽象类有构造方法, 接口没有构造方法; 接口中可以使用default修饰方法,抽象类不能使用default修饰方法。
    -   4.使用方式不同
        -   抽象类一般作为父类存在, 需要子类通过extends继承。接口需要通过类implements实现。
    -   5.继承
        -   类只支持单继承, 接口支持多继承
    -   6.应用场景不同
        -   如果仅仅是为了扩展类的功能,优先选择接口;
        -   如果除了功能外,还需要保存不同的数据,选择抽象类,抽象类中的抽象方法,需要在子类中重写,抽象类可以约束所有的子类都具有某个功能
    

JavaSe基础---抽象类
https://rofgd.github.io/2020/05/10/JavaSe基础---抽象类/
作者
ReadPond
发布于
2020年5月10日
许可协议