- 它只能修饰2个东西:方法和类。抽象方法、抽象类
- abstract与final是互斥的;永远不能同时出现
抽象类
有得有失
与普通类的区别:有得有失
- 有得:得到一个新功能:抽象类可拥有抽象方法。
- 有失:抽象类失去一个功能:创建对象(创建实例)。
抽象类的主要作用
- 派生子类
- 子类构造器一定要调用父类构造器一次,因此抽象类必须有构造器。
抽象方法
- 只有方法签名,没有方法体。
private abstract void test();
- 抽象方法,一定要交给子类重写。
抽象类的作用
- 定义变量,只能用它的子类的实例,向上转型。
- 调用类方法和类变量
- 派生子类----主要目的
- 抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会大致保留抽象类的行为方式。
- 抽象父类可以只定义需要使用的某些方法,把不能实现的部分抽象成抽象方法,留给其子类实现。
- 父类里提供的方法只是定义了一个通用公式,其实现也许并不完全由自身实现,而必须依赖于其子类的辅助。
抽象类派生子类
【规则:】子类要么重写抽象父类中的所有抽象方法,要么子类也只能是抽象的。