Aniaml animal = dog;这句怎么理解啊?
Aniaml animal =new Animal();意思是创建Animal对象,这边写=dog,是创建了一个Dog类对象animal?还是把之前
Dog dog=new Dog();这里的dog转成Animal类型了。
父类持有子类的引用。简单点讲animal对象与dog对象持有相同方法say()时,假定Animal的say方法是打印字符串“a",后者是“doger"。当你用 Aniaml animal = dog 之后( 向上转型)。调用animal对象的say方法,输出的内容是doger 字符串,而非是a。
前一句不是Dog dog = new Dog();意思就是创建了一个dog对象,类型是Dog,用一个子类的引用dog指向子类对象,然后Animal animal = dog;这个就是用一个父类的引用animal指向这个子类对象dog,是Animal类型的(因为是类是对象的类型),就是由Dog类型转换为Animal类型,又因为Dog是Animal的子类,所以是向上转换。不知道你能理解我说的意思吗。。。我表达的可能不是很清楚,但大致就是这个意思,手打不易啊望采纳。不懂可以追问。
先看上面一句先创建了dog对象,记住是dog对象,已经有了一只狗对象,下面animal=dog这句你可以这么理解—狗是动物,向上转换就是这样,向下转换你可以这样说—dog=animal动物是狗,是不是觉得有问题!但这里创建对象是狗,向下有了一个对象,向下转换的时候可以这么理解—dog=(Dog)animal这个动物是狗,那就没问题了。后面说猫为什么不行,cat=(Cat)animal这个动物是猫。但是你创建的对象是狗,所以不对!