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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

   哪位大神能够形象地用生活中的实际例子来描述一下多态中的向下转型吗,实在是难以理解...

5 个回复

倒序浏览
首先你能懂向上转型吗?向下转型之前必然发生过向上转型。

那就先说说向上转型。

生活中的例子。就说猫。猫属于动物。远远看到前方有个东西。你说那个东西是个猫也行,你说那个东西是个动物也行。注意,这里第二句话"那个东西是个动物",就发生了向上转型。什么叫向上转型?你把一个猫说成了动物,范围扩大了,就叫向上转型。

向下转型
远远看到前方有个东西。你说那是个动物,你又说,那是个猫,这就发生了向下转型。一个大的范围"动物",被你说的范围缩小了,说是猫。这就叫向下转型。

代码中,就是把说这个动作转成代码表示。

至于向上转型、向下转型,肯定都是有用处的。
回复 使用道具 举报
本帖最后由 wunairensheng95 于 2015-9-5 23:10 编辑

我给你讲一个故事啊   一个理发师  手艺很好  于是顾客越来越多  忙不过来  他决定招学徒   来了一个小伙子当学徒   首先要封装  把这门手艺功能封装进去    学徒学习理发   刮脸 烫发 自然继承了理发师的手艺   可以说继承了父类的方法  但是学徒在烫发上进行了创新,开创了自己特有的烫发方式   算是复写了父类烫发的方法   学徒在理发店一边学习 一边工作 用的全是理发师的东西 比如说剪刀  电吹风  所以说继承了父类的属性   但是学徒觉得剪刀不好使 自己在淘宝买了一把  这体现了成员变量不存在复写的原理  学徒有自己的剪刀  但是师傅的剪刀还在那里   来了一个老顾客   说小伙子  你师傅怎么给我理发  你就给我怎么理发   这就是向上转型  为了让顾客满意 剪出与师傅相同的效果  只好收起了自己的理发工具  用师傅的工具 (即属性)来理发    但是学徒复写了烫发的方法  不会师傅的方法   只能用自己复写过的烫头方法给顾客烫头    没办法  顾客点名要求按照师傅的套路来 自己的特有的方法根本没发用  于是对顾客说  先生 我研究了很多新的理发方法  肯定适合您 要不您试试?   顾客同意了   于是向下转型   学徒拿出了自己的工具  使用了自己的特有的方法给顾客理发   这就是一个学徒的历史
回复 使用道具 举报
asinzuo 发表于 2015-9-5 22:21
首先你能懂向上转型吗?向下转型之前必然发生过向上转型。

那就先说说向上转型。

是这个道理,代码上你也体现一下嘛

点评

上面有一个地方写错了 向上:Animal animal=new Cat() 向下:Cat cat2=(Cat)animal  发表于 2015-9-6 06:39
向上:Animal cat=new Animal() 此时cat已经向上转型了,cat是父类类型了 向下:Cat cat2=(Cat)cat。把父类的引用,转成子类类型  发表于 2015-9-6 06:36
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马