1.为什么使用抽象?
(1) 类用于描述现实生活中一类事物,类中有属性有方法,并且方法都有方法体。
某种情况下,父类只知道子类应该具备一个怎样的方法,但是不能明确知道子类如何实现该方法。
例如:几何图形(多态练习),所有的几何图形都应该具备一个计算面积的方法,但是不同几何图形,计算面积的方式不同。
(2) Java为上述问题提供了相应的解决办法
Java允许父类中只是提供一个方法的声明,但是不提供具体的实现,
而具体的实现交给子类来完成,该方法被称为“抽象方法”;
拥有一个或多个抽象方法的类,被称为“抽象类”。
2.如何使用抽象:abstract
(1) abstract 修饰的类称为“抽象类”
① 格式:访问控制修饰符 abstract class 类名{}
② 拥有一个或多个抽象方法的类必须是抽象类
③ 抽象类中可以有非抽象方法
④ 抽象类中可以没有抽象方法
⑤ 抽象类不能创建实例
⑥ 抽象类中可以声明构造器。目的:当子类继承父类后,继承父类中所有的属性和方法,因此子类需要知道父类如何为对象进行初始化
(2) abstract 修饰的方法称为“抽象方法”
① 格式: 访问控制修饰符 abstract 返回值类型 方法名(参数列表);
② 当子类继承父类后,若重写了父类中“所有”的抽象方法,该类为具体类,可以创建实例。
③ 当子类继承父类后,若没有重写父类中“所有”的抽象方法,该类必须为抽象类,不能创建实例。
(3) 注意
① abstract 和 static 不能同时使用
② abstract 和 final 不能同时使用
③ abstract 和 private 不能同时使用
3.实例:点击获取源码
该实例是 对象、继承、封装、多态、抽象类的组合应用