什么是抽象类
- 如果一个类中,有方法没有方法体,那么这个方法就是抽象方法.即,方法只有声明,没有方法体实现.
- 一个类中,只要有一个抽象方法,那么这个类就是抽象类,说明这个类不具体
抽象类的用法
- 抽象类也是类,有类就可以放属性和方法(当方法体/不带方法体)
- 抽象类中可以放置属性,属性是用来存储数据的
- 抽象类中可以放置有方法体的方法,此方法能够完成某个功能
- 抽象类中可以放置没有方法体的方法,此方法就是抽象方法
注意
抽象类是不能实例化对象的,因为抽象类有抽象方法
程序员不能实例化,并不等于jvm不能实例化对象
抽象类的特点
- 抽象类只能当父类
- 如果在子类中把所有的抽象类的方法都补上方法体,那么这个子类就不是抽象类,就可以实例化对象了,同时也可以调用方法了.
- 如果在子类中没有把所有的抽象方法补上方法体,那么这个子类还是抽象类,满足抽象类的用法
抽象类的应用场景
- 在父类中有一些方法没有方法体,或者没有必要给上方法体,此时把方法做成抽象方法,那么此类就变成抽象类
- 比如:
Shap形状类中有一个方法叫做draw()绘制图形的方法,但没有方法体
Triangle类继承了Shap类,重写了draw()方法,作用是绘制三角形
Retangle类继承了Shap类,重写了draw()方法.作用是绘制矩形
此时Shap类中的draw()方法就是抽象方法,因为子类要绘制不同的形状,而此时Shap类中的draw()方法就没必要写具体绘制某种形状的方法了.具体方法由子类根据情况去实现,各子类实现的结果也就不同了.
把抽象类抽象到极致,所有的方法都没有方法体,此种情况就不建议做成类了,建议做成接口.