一.抽象类
1.概述
在java中,一个没有方法体的方法定义为抽象方法,而该类中如果有抽象方法,则该类必须定义为抽象类
2.特点
①抽象类和抽象方法必须用abstract修饰
例如: public abstract class 类名{}
public abstract void eat();
②抽象类中可以没有抽象方法,但有抽象方法的类一定是抽象类;
③抽象类不能被实例化(不能创建对象)
但可以参照多态的方式,通过子类对象实例化,这叫抽象类多态。
④抽象类的子类
要么重写抽象类中的所有抽象方法
要么创建的子类本身就为抽象类
3.成员特点
①成员变量
可以是变量
也可以是常量
②构造方法
有构造方法,但不能被实例化
作用:用子类访问父类数据的初始化
③成员方法
可以有抽象方法:限定子类必须完成某些动作。抽象方法不能用private、final、static修饰。
也可以有非抽象方法:提高代码复用性(继承)。
二.多态(java三大特点之一)
1.概述
同一个对象,在不同时刻表现出来的不同形态,称为多态。
举例:猫
可以说猫是猫:Cat cat = new Cat();
也可以说猫是动物:Animal cat = new Cat();
2.多态的前提和体现
①有继承或实现关系
②有方法重写
③有父类引用指向子类对象
3.多态中成员访问特点
①成员变量:编译看左边,运行也看左边
②成员方法:编译看左边,运行看右边
原因:成员方法有重写,而成员变量没有
4.多态的好处和弊端
①好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作。
②弊端:不能使用子类的特有功能
5.多态中的转型
①向上转型
从子到父
父类引用指向子类对象。
举例:Animal a = new Cat();
②向下转型(用于解决多态的弊端)
从父到子
父类引用转为子类对象。
举例:Cat c = (Cat) a;