rb6*_*612 2 java oop polymorphism downcast
假设我有一个超类Animal,以及一个子类Dog.
我们可以说:
Animal a = new Dog();
Run Code Online (Sandbox Code Playgroud)
我们不能低声说:
Dog b = new Animal();
Run Code Online (Sandbox Code Playgroud)
所以我明白动物不一定是狗.但是,为什么在狗容器中有动物"蓝图"会抛出异常呢?因为Dog从Animal继承了方法,当我们把这种动物放入狗容器中时,我们知道Dog继承/覆盖了Animal所有的方法,那为什么Java不允许这样呢?
谢谢!
Dog b = new Animal();
b.Woof();
Run Code Online (Sandbox Code Playgroud)
Animal没有名为Woof()的接口/方法.它不知道如何表现得像狗,但所有的狗都知道如何表现得像动物.