您的位置:首页 > 编程语言 > Java开发

Java多态性以及上下转型

2010-01-22 17:32 183 查看
问:老虎是动物吗?那么动物是老虎吗?

答:老虎当然是动物,动物不一定是老虎。 [废话]

现在你明白了,原来是这样:

向上转型:把一个具体的物种的实例归为总的动物类。即: 动物 动物实例 = new 具体物种();

向下转型:把一个总的动物实例归为一个具体的物种。

================================================================

用代码来说事吧:

------------------------------------------------------------------------------

动物类:
public class Animal
{
public void bellow(){}
}


------------------------------------------------------------------------------

老虎类 继承 动物类
public class Tiger extends Animal
{
public void bellow()
{
System.out.println("老虎吼叫。。。");
}
}


------------------------------------------------------------------------------

狮子类 继承 动物类
public class Lion extends Animal
{
public void bellow()
{
System.out.println("狮子吼叫。。。");
}
}


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

广告1:向上转型总是能成功的。只给一句代码

Animal animal = new Tiger();

向上转型:upcasting - 父类引用接受子类实例 [不会报错 + 不用强转] /

问题1:我们可以把一个动物类的实例交给老虎类吗? [直接向下转型]

Tiger tiger = new Animal(); //转型能成功吗?

-------------哈哈,你猜着了吗? 答案是:不会成功。

这是为什么呢?

问题2:既然我们可以用动物类接收一个老虎类实例,那么能把这个接收了老虎类实例的动物类引用再转成狮子类吗?

问题3:那我们如何才能把动物类引用赋给具体某一个物种呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: