1.多态:
作用:功能的扩展
场景:题目中一定有两条业务线,一条线叫继承,继承线是第二条线中方法的参数/返回值类型!
引入:动物园 动物父类,动物子类,饲养员类
定义:(字面意思:一组对象在做同一行为的时候,有多种表现形态 就叫多态)
(动态绑定:开发者在编写阶段,让父类做参数(减少子类做参数的方法个数)
在程序运行阶段,又会根据传入的实际参数类型 自动绑定对应的执行方法。这个就叫动态绑定)
多态的实现条件有3个: 继承, 重写, 声明父类new子类 Animal a=new Dog();
2. 声明父类new子类 VS 声明子类new子类
声明父类new子类 得到的对象,只能调用子类继承的,或者子类重写的资源;
不可以调用子类特有的。
声明子类new子类 可以调用继承的,重写的,以及子类特有的。
3. 引用数据类型之间的类型转换:声明父类new子类
父类
|
子类
声明父类new子类 ,是子类型 转 父类型 。发生的是向上类型转换,[是自动进行的];
====》但是有问题:产生的对象,只能调用继承/重写父类的资源,不能调用子类特有的资源;
【问题:如果 仍然想让 声明父类new子类 产生的对象,可以调用子类的资源怎么办?】
解决办法:
对 该对象 做向下类型转换; [强制进行] ((子类类型)对象名).特有的资源了。
((Cat)animal).getName();
【问题:有可能发生类型转换错误】
解决办法:
使用关键字 if(animal instanceof Elephant){
Elephant e= (Elephant)animal;
}else if(animal instanceof Cat){
Cat e= (Cat)animal;
}

被折叠的 条评论
为什么被折叠?



