-
明确设计思想
-
子类越来越具体,父类需要越来越通用
-
父类和子类保证能够共享特征
-
父类的设计有时非常抽象,以至于它没有具体的实例
-
抽象类和抽象方法
-
abstract关键字修饰一个类,这个类叫做抽象类
-
abstract关键字修饰一个方法,该方法叫做抽象方法
-
含有抽象方法的类必须被声明为抽象类
-
抽象类不能被实例化(不能被new),抽象类是用来被继承的。
-
抽象类的子类必须重写父类的抽象方法,并提供方法体,如果未重写全部的抽象方法,还有其他抽象方法在子类中,则该子类也为抽象类(抽象类的子类可以是抽象类)
-
abstract不能修饰变量、代码块、构造器
-
abstract不能修饰私有方法、静态方法、final修饰的方法、final修饰的类
解析:
抽象类是用来模型化父类无法确定的方法实现,而是由子类提供具体实现的对象的类。
例如:
所有的车都有加速和减速,但是父类无法确定每种车的具体加速度,因此各个子类就需要继承车的加速和减速方法,根据具体的加速度描述各自加速和减速的情况
抽象类的模板方法设计模式
抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,
子类在抽象类的基础上进行扩展、改造,但是子类总体上会保留抽象类的行为方式。