A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 403383221 中级黑马   /  2012-11-19 21:05  /  1816 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

既然子类继承了父类的方法和属性,那为什么还要向上转型呢??

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
个人感觉。。比如10张牌。我们给牌定义一个card类型 ,每张牌都有一个TURE方法。如果不向上转型的话。。那么要写出每张牌的属性(比如花色,数字),卡1(花色,数字) 卡2(花色,数字)。。。以此类推。。看起来好像很比较容易理解。。但是代码量确实原来的十倍。。如果是一百个子类上千个子类、、那结果。。就有意思了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
1、向上转型更好的体现了java面向对象的特征,更好的展示了多态,主要是在运行时的多态

2、向上转型体现出的这种多态特征,减少了代码编写量,使得后期代码的维护更加容易了,具体例子网上较多

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
向上转型就是子类向父类转型,它们是IS-A的关系,子类继承了父类的所有变量和方法,它完全可以表现父类的特征,不会产生歧义,就好比麻雀和鸟的关系,向上转型就是麻雀是鸟,没有任何歧义
我定义了一个子类Cat,它继承了Animal类,那么后者就是前者是父类。我可以通过

Cat c = new Cat();
实例化一个Cat的对象,这个不难理解。但当我这样定义时:

Animal a = new Cat();
这代表什么意思呢?

    很简单,它表示我定义了一个Animal类型的引用,指向新建的Cat类型的对象。由于Cat是继承自它的父类Animal,所以Animal类型的引用是可以指向Cat类型的对象的。这就是“向上转型”。
回复 使用道具 举报
向上转型 是把子类的对象转变为父类的对象 。
那么子类里独有的方法就不能调用了,这也是一般与特殊的关系


从程序上理解的
向上转型是把父类的对象转变成子类的对象。

class Wind extends Instrument {
public static void tune(Instrument i)

Wind flute=new Wind();
tune(flute); //向上转型
把(flute)传给 tune(Instrument i)等于把父类的对象变为
子类的对象了

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
为了更好的实现java的特性。向上转型实现了java的多态。如果你的形参是一个父类或接口的引用类型那么你想想吧。你可以传的实参就可以有很多种了,如果你写死了。那么你只能按照形参的指定的类型传递引用了。这么写程序会让人疯狂的。后期基本都是通过接口来传参

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马