黑马程序员技术交流社区
标题:
关于多态强转的问题
[打印本页]
作者:
hui18927318227
时间:
2015-9-24 21:15
标题:
关于多态强转的问题
Animal a = new Cat(); // a只能调用Animal的函数和变量
Cat c = (Cat)a; //强转后c就能调用Cat的函数和变量
为什么?
作者:
xuxu5112
时间:
2015-9-24 21:51
多态.jpg
(1.08 MB, 下载次数: 42)
下载附件
2015-9-24 21:50 上传
我想象中应该是个立体的图,但是不确定是否正确.
作者:
阿秋
时间:
2015-9-24 23:10
1.Animal a = new Cat(); // a只能调用Animal的函数和变量
2.Cat c = (Cat)a; //强转后c就能调用Cat的函数和变量
第一行代码是:cat向上转型为Animal类,Animal范围太广了,猫会抓老鼠不代表狗会抓,因此向上转型后只能调用Animal和cat共有的函数.这样才不会出现之前的状况
第二行代码是将Animal向下转型,相当于将Animal类限制在cat类,本来只知道这是Animal不知道是cat或dog,确保不出错,调用Animal公共的行为函数,现在明白了是cat类,那么除了之前共有的函数还可以调用cat类独有的函数
作者:
清心玉质
时间:
2015-9-24 23:35
父类接收子类当然只能用父类方法 ,父类里都是抽象出的共享数据,如果要用子类特有数据肯定要先还原成子类自身。这样是符合逻辑的
作者:
yi秒的危笑
时间:
2015-9-25 09:07
2楼跟我的理解方法一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2