抽象类
一、抽象类的基本概念
普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。
那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。抽象类里不一定有抽象方法,有抽象方法的类一定是抽象类。抽象类要使用abstract关键字声明。
二、抽象类的使用
抽象类的使用原则如下:
(1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
(2)抽象类不能直接实例化,需要依靠子类采用向上转型的方式处理。
(3)抽象类必须有子类,使用extends继承,一个子类只能继承一个抽象类。
(4)子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
(5)抽象方法只能定义在抽象类中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。
(6)抽象方法只定义方法声明,并不定义方法实现。
(7)抽象类不可以被创建对象(实例化)。
(8)只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
三、抽象类的使用限制
抽象类中由于可能存在一些属性,所以抽象类中提供了抽象方法
结果如图所示:
抽象类不能被finall声明
因为抽象类必须有子类,而被finall修饰的类不能有子类