Java 为什么要将子类对象指定给超类引用?
动物是一个超类 猫是动物的一个亚类 猫是猫科动物的一个亚类 犬科动物是动物的一个亚类 狗是犬科动物的一个亚类 所有类都有自己的eat()方法,该方法输出: “(班级)正在吃饭” 我已经尝试过创建一个动物数组,遍历它们,并调用eat()方法,该方法为每个给定的动物输出正确的输出 我的问题是,这样做有什么好处:Java 为什么要将子类对象指定给超类引用?,java,inheritance,polymorphism,Java,Inheritance,Polymorphism,动物是一个超类 猫是动物的一个亚类 猫是猫科动物的一个亚类 犬科动物是动物的一个亚类 狗是犬科动物的一个亚类 所有类都有自己的eat()方法,该方法输出: “(班级)正在吃饭” 我已经尝试过创建一个动物数组,遍历它们,并调用eat()方法,该方法为每个给定的动物输出正确的输出 我的问题是,这样做有什么好处: Cat j = new Animal(); 猫j=new Cat()是否会对动物类型的方法做任何需要做的事情,因为通过继承它已经是动物了 编辑:对不起,我的意思是相反的——一个人声明: 动
Cat j = new Animal();
猫j=new Cat()是否会对动物类型的方法做任何需要做的事情,因为通过继承它已经是动物了
编辑:对不起,我的意思是相反的——一个人声明:
动物j=新猫()
对不起 通过同样的操作,我们实现了运行时多态性 将根据对象的类型调用重写的方法 现在来问你的问题 只有一句话可以回答这个问题 猫永远是动物
Animal a = new Cat();//ok
并非所有的动物都是猫
Cat c = new Animal();//not ok
是学习和理解这一点的好例子
为什么要将子类对象指定给超类引用
- 多态性
- 在进行测试时模拟对象
- 如果您希望在将来用另一个实现替换它,则具有灵活性
- 最有可能用于继承类和抽象类
Cat j=新动物()代码>不可编译。您不能这样做。你的意思是Animal j=new Cat()
?大盒子不能装在小盒子里。比运行时多态性有更多的好处…@luigimendoza完全同意他只是想给他一个基本的想法