5 多态
5.1多态:polymorphism概念
定义:某一类事物的多种存在形态
表现形式:父类变量指向子类实例
例:动物中猫,狗
猫这个对象对应的类型是猫类型
猫 x = new 猫();
同时猫也是动物中的一种,也可以把猫称为动物
动物 y = new 猫();
动物是猫和狗具体事物中抽取出来的父类型
站在父类的角度看子类对象,看不到子类特有的属性和方法
相同的的方法会被重写,变量没有重写之说。如果子类声明了父类一样的变量,那意味着子类中将有两个相同名称的变量!
5.2多态的作用和前提
5.2.1多态的前提:
1.需要存在继承或者实现关系
2.要有覆盖操作(子类对父类方法重写)
3.父类类型变量指向子类实例
5.2.2程序中体现::
父类或者接口的变量指向子类(实现类)对象
子类对象的类决定方法的调用
5.2.2多态的前提:
多态的存在提高了程序的扩展性和后期可维护性
note:编译类型和运行时类型(引用数据类型)
5.3多态的特点
- 成员方法:有
编译时:要查看引用变量所属的类中是否有所调用的成员
在运行时:要查看对象所属的类中是否有所调用的方法
- 成员变量:无
只是编译类型所指向的成员变量
即:成员变量没有多态性
- 静态成员方法:无
没有多态性
5.4对比于类型转换
向上转型:相当于基本数据类型的隐式转换;
向下转型:类似于强制转换
5.5