问题描述
动物是超类
猫是动物的一个子类
猫是猫的一个子类
犬是动物的子类
Dog 是 Canine 的一个子类
Dog is a subclass of Canine
所有的类都有自己的eat()方法输出:
All of the classes have their own eat() method that outputs:
(班级)正在吃饭"
我已经尝试过创建一个 Animals 数组,遍历它们,然后调用eat() 方法,该方法为每个给定的动物输出正确的输出.
I've already tried creating an array of Animals, looping through them, and calling the eat() method, which outputs the proper output for each given animal.
我的问题是,这样做有什么好处:
My question is, what does one gain by doing this:
Cat j = new Animal();
Cat j = new Cat()
不会对带有 Animal 类型的方法做任何您需要做的事情,因为它已经通过继承成为一种动物?
wouldn't Cat j = new Cat()
do anything you need do regarding methods with Animal types, since it's already an animal through inheritance?
对不起,我的意思是反过来——声明有什么好处:动物 j = new Cat();
I'm sorry, I meant it the other way around--what does one gain by declaring:Animal j = new Cat();
对不起!
推荐答案
通过这样做,我们实现了运行时多态性.
by doing the same we achieve runtime polymorphism.
根据对象的类型,将调用重写的方法
based on the type of object the overridden method will be called
现在来玩你的问题
只需一行答案
猫永远是动物
Animal a = new Cat();//ok
不是所有的动物都是猫
Cat c = new Animal();//not ok
这里是学习和理解这一点的好例子
here is a good example to learn and understand this
这篇关于为什么将子类对象分配给超类引用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!