问:老虎是动物吗?那么动物是老虎吗?
答:老虎当然是动物,动物不一定是老虎。 [废话]
现在你明白了,原来是这样:
向上转型:把一个具体的物种的实例归为总的动物类。即: 动物 动物实例 = new 具体物种();
向下转型:把一个总的动物实例归为一个具体的物种。
================================================================
用代码来说事吧:
------------------------------------------------------------------------------
动物类:
------------------------------------------------------------------------------
老虎类 继承 动物类
------------------------------------------------------------------------------
狮子类 继承 动物类
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
广告1:向上转型总是能成功的。只给一句代码
Animal animal = new Tiger();
向上转型:upcasting - 父类引用接受子类实例 [不会报错 + 不用强转] /
问题1:我们可以把一个动物类的实例交给老虎类吗? [直接向下转型]
Tiger tiger = new Animal(); //转型能成功吗?
-------------哈哈,你猜着了吗? 答案是:不会成功。
这是为什么呢?
问题2:既然我们可以用动物类接收一个老虎类实例,那么能把这个接收了老虎类实例的动物类引用再转成狮子类吗?
问题3:那我们如何才能把动物类引用赋给具体某一个物种呢?