一、抽象类
1、抽象类概述:
回想前面我们的猫狗案例,提取出了一个动物类。并且我们在前面也创建过了动物对象,其实这是不对的。
为什么呢?
因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。
在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。
2、抽象类的特点
1) 抽象类和抽象方法必须用abstract关键字修饰
格式如下:
* abstract class 类名 {};//抽象类
* public abstract void eat();//抽象方法
2) 抽象类不一定有抽象方法,有抽象方法的类一定是抽象类
3) 抽象类不能实例化
那么,抽象类如何实例化呢?
按照多态的方式,由具体的子类实例化。其实这也是多态的一种,抽象类多态。
4) 抽象类的子类
* 要么是抽象类
* 要么重写抽象类中的所有抽象方法
3、抽象类的成员特点
1) 成员变量
* 可以是变量
* 也可以是常量
2) 构造方法
* 有构造方法,但是不能实例化
那么,构造方法的作用是什么呢?构造方法是用于子类访问父类数据的初始化。
3)成员方法
* 可以有抽象方法,限定子类必须完成某些动作
* 也可以有非抽象方法,提高代码复用性
4、具体的案例