引出抽象
求圆 ,矩形,三角形,面积
发现的问题
每一个图形计算面积的方式都不一样,所以每一个类都必须得要覆盖父类当中的 getArea方法,来去实现求面积的方式
带来的问题
怎么样保证子类必须得要覆盖父类当中定义的方法。父类不需要提供方法体
抽象方法
格式
在方法前面添加了一个关键字 abstract
抽象方法特点
- 抽象方法是没有方法体的
- 抽象方法必须得要定义在抽象类或接口当中
- 抽象方法不能是私有的 private,final, static
注意点
子类必须得要去覆盖此方法,在定义的时候不要方法体了。
抽象类
概念
abstract 修饰的类,就成为了抽象类,抽象类必须得要有子类才行。(抽象类一般都当作父类来继承)
抽象类当中的注意点
- 抽象类是不能直接创建对象的。
- 抽象类当中,可以有抽象方法 ,也可以有非抽象方法(普通方法:给子类调用的)
- 子类没有去覆盖抽象方法,把子类也变成抽象类
- 构造方法不能定义为私有化 (抽象方法必须得要让子类继承之后,才能实现内部的方法体。子类继承的话,先去调用父类的构造方法)
- 抽象类不能使用 final 来去修饰
抽象类与普通的类有什么区别
- 普通类你有的(方法 ,字段,构造器),抽象类都有
- 抽象不能创建对象。抽象类可以包含抽象方法,也可以包含非抽象方法
- 抽象类必须有子类才有意义