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日
许可协议