假设我有Animal的超类和Dog的子类。

我们可以这样说:

Animal a = new Dog();


我们不能因为说:

Dog b = new Animal();


因此,我确实知道动物不必像狗一样。但是,为什么在狗的容器中放动物“蓝图”会引发异常?由于Dog继承自Animal的方法,因此当我们将动物放入动物容器中时,我们知道Dog继承/覆盖Animal拥有的所有方法,那么Java为什么不允许这样做?

谢谢!

最佳答案

Dog b = new Animal();
b.Woof();


Animal没有称为Woof()的接口/方法。它不知道如何表现得像狗,但是所有的狗都知道如何表现像动物。

关于java - 为什么在Java中不允许这种向下转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29907890/

10-14 10:10