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基础---抽象类/