为什么要将子类对象分配给超类引用?

时间:2014-04-23 19:59:28

标签: java inheritance polymorphism

Animal是一个超类

Feline是Animal的子类

Cat是Feline的子类

犬是动物的一个次级

Dog是Canine的子类

所有类都有自己的eat()方法输出:

“(班级)正在吃”

我已经尝试过创建一个动物数组,循环遍历它们,并调用eat()方法,该方法为每个给定的动物输出正确的输出。

我的问题是,通过这样做可以获得什么:

Cat j = new Animal();
对于使用Animal类型的方法,

不会Cat j = new Cat()做任何你需要做的事情,因为它已经是通过继承的动物了吗?

编辑:对不起,我的意思是相反 - 通过声明获得了什么: Animal j = new Cat();

对不起!

2 个答案:

答案 0 :(得分:0)

通过这样做我们实现了运行时多态性。

基于对象的类型,将调用重写的方法

现在开始玩你的问题了

只有一行回答

猫总是动物

Animal a = new Cat();//ok

所有动物都不是猫

Cat c = new Animal();//not ok

here是学习和理解这个

的好例子

答案 1 :(得分:0)

  

为什么要将子类对象分配给超类引用?

  • 多态性

  • 进行测试时模拟对象

  • 如果您希望将来将其替换为其他实施

  • ,则具有灵活性
  • 最常用于继承和抽象类