1 多态是面向对象三大特征之一,是指同一个对象,在不同时刻表现出来的不同形态
父类引用指向子类对象。
多态中成员访问:编译看左边,执行看右边。
访问成员变量和成员方法不同是因为成员方法有重写,而成员变量没有。
2 多态提高了程序的扩展性
定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作。
3 向上转型:父类引用指向子类对象
向下转型:父类引用转为子对象(可以解决父类对象无法访问子类中特有的方法的问题)
//向上转型
Animal a = new Cat();
//向下转型
Cat c = (Cat)a;
4 抽象类:没有方法体的方法定义为抽象类,使用abstract关键字定义抽象类
类中如果有抽象方法,该类必须定义为抽象类
5 接口
(1)接口使用关键字interface
public interface 接口名{}
(2)类实现接口使用implements
public class 类名 implements 接口名{}
(3)接口不能直接实例化
可以通过实现类对象实例化
(4)多态的形式分为:类多态,抽象类多态,接口多态
多态的前提:有继承或实现关系、有方法重写、有父(类/接口)引用指向(子/实现)对象
(5)接口的实现类:要么是抽象类,要么必须重写接口中的所有抽象方法
(6)
类和类:只能单继承,可以多层继承
类和接口:可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口和接口:可以单继承,也可以多继承
6 抽象类和接口区别
设计理念区别:
抽象类:对事物(类)的抽象,包括属性、行为
接口:对行为抽象
成员区别:
抽象类:变量、常量、抽象方法、非抽象方法
接口:常量、抽象方法
7 抽象类名和接口名作为形参和返回值
方法的形参是抽象类名,其实需要的是该抽象类的子类对象
方法的返回值是抽象类名,其实返回的是该抽象类的子类对象
接口同理
方法的形参是接口名,其实需要的是该接口的实现类对象
方法的返回值是接口名,其实返回的是该接口的实现类对象