为了账号安全,请及时绑定邮箱和手机立即绑定

Aniaml animal = dog;这句怎么理解啊?

Aniaml animal = dog;这句怎么理解啊?

Aniaml animal =new Animal();意思是创建Animal对象,这边写=dog,是创建了一个Dog类对象animal?还是把之前

Dog dog=new Dog();这里的dog转成Animal类型了。


正在回答

3 回答

父类持有子类的引用。简单点讲animal对象与dog对象持有相同方法say()时,假定Animal的say方法是打印字符串“a",后者是“doger"。当你用 Aniaml animal = dog  之后( 向上转型)。调用animal对象的say方法,输出的内容是doger 字符串,而非是a。

0 回复 有任何疑惑可以回复我~
#1

qq_慕移动7146552

如果是Dog dog1=(Dog)animal;那调用方法后为什么是doger,而不是a 呢?
2019-01-16 回复 有任何疑惑可以回复我~

前一句不是Dog dog = new Dog();意思就是创建了一个dog对象,类型是Dog,用一个子类的引用dog指向子类对象,然后Animal animal = dog;这个就是用一个父类的引用animal指向这个子类对象dog,是Animal类型的(因为是类是对象的类型),就是由Dog类型转换为Animal类型,又因为Dog是Animal的子类,所以是向上转换。不知道你能理解我说的意思吗。。。我表达的可能不是很清楚,但大致就是这个意思,手打不易啊望采纳。不懂可以追问。

1 回复 有任何疑惑可以回复我~

先看上面一句先创建了dog对象,记住是dog对象,已经有了一只狗对象,下面animal=dog这句你可以这么理解—狗是动物,向上转换就是这样,向下转换你可以这样说—dog=animal动物是狗,是不是觉得有问题!但这里创建对象是狗,向下有了一个对象,向下转换的时候可以这么理解—dog=(Dog)animal这个动物是狗,那就没问题了。后面说猫为什么不行,cat=(Cat)animal这个动物是猫。但是你创建的对象是狗,所以不对!

14 回复 有任何疑惑可以回复我~
#1

晨旭圆

这种比喻挺好,给你赞
2018-10-01 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Aniaml animal = dog;这句怎么理解啊?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信