1.多态概论:某一个事物,在不同时刻表现出来的不同状态,要想有多态,就必须要有继承,继承是多态的前提
举例:
猫可以是猫的类型。猫 m = new 猫();
猫也是动物的一种,也可以把猫称为动物。 动物 d = new 猫();
2.多态的前提:
1. 要有继承的关系
2、要有方法的重写,如果没有重写也是可以的,但是你不重写就没有意义
3、要有父类的引用指向子类的对象
格式:
父 f = new 子();
3.多态访问成员特点:
1、成员变量
编译看左边,运行看左边
2、构造方法
创建子类对象的时候,先访问父类的构造方法,先对父类的数据进行初始化
3、成员方法
编译看左边,运行看右边
因为子类的成员方法存在重写,所以运行访问的时候看右边
4、静态的成员方法:
静态的随着类的加载而加载
由于被static修饰的都是与类有关系的,所以它算不上重写
所以,编译的时候看左边,运行访问的时候也看左边
总结:只有访问成员方法的时候是编译看左边,运行看右边,其他的是编译看左边,运行看左边
4.多态的好处:
1.提高了程序的维护性(由继承保证)
2.提高了程序的扩展性(由多态保证)
5.多态的弊端:
1.不能直接访问子类特有功能 解决方法:转型
2.不能通过多态去访问父类和子类同名的方法,解决方式:super
6. 多态中的转型
1.向上转型(从子到父 父类引用指向子类对象)
格式 Fu5 f = new Zi5();
2.向下转型
格式 Zi5 z = (Zi5) f;
注意事项:
7.final关键字保留父类特色方法