java想问一下关于多态的知识点 如图 为啥换成Cat不行 Animal就可以
题主的问题是关于对象转型的问题。testAnimalVoice(Cat c);方法可接受的参数类型是:Cat类型或者其子类的类型的变量。而变量a是Animal类型,所以不能自动转换成Cat类型,要想成立需要强制类型转换。
强制类型转换在内存中所发生的变化如下图:Animal a = new Cat();Cat a2 = (Cat)a;
解释:
Animal a = new Cat();
虽然a指向Cat对象,但真真实实看得到的只能是属于Animal对象的属性和方法。
Cat a2 = (Cat)a;
a2所指向而且看得到的是整个Cat对象的属性和方法。
【java想问一下关于多态的知识点 如图 为啥换成Cat不行 Animal就可以】 由此可见:testAnimalVoice(a);会报错。
■网友
猫是动物,但是不见得所有动物都是猫。动用一下自己的逻辑思维。
■网友
多态 父类不能反过来传给子类的
■网友
看第一图,你那个方法不就叫「testAnimalVoice」吗,换成~Cat~当然不行了.
推荐阅读
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 建议|育婴师给出这几点建议,来了解一下小孩发烧咳嗽怎么办
- 车祸违驾|为什么交警在查车时,会用手摸一下车尾,你知道是什么意思吗?
- 有哪些做短视频的自媒体推荐
- 想买个30w—50w的轿车,外形优雅精致,气质沉静内敛。要能够顾家,稳定,安全性能好。请帮忙推荐一下
- 汽车扒一扒|有谣言说国内的雷克萨斯配置低,我澄清一下,这不是谣言
- 怎样防止U盘内的文件被复制
- 汽车知识|广汽丰田旗下全新TNGA中型SUV“威兰达”,还不来了解一下
- 卫星云图中这种图像是啥情况
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
