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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 位俊鹏 中级黑马   /  2014-2-25 23:47  /  996 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. //有以下代码:
复制代码

8 个回复

倒序浏览
代码呢 把你的代码贴出来
回复 使用道具 举报
没有看到代码,点击复制代码,什么都没有。。。
回复 使用道具 举报
yunzhongzhuhuo 发表于 2014-2-26 17:16
没有看到代码,点击复制代码,什么都没有。。。

实在不好意思..我是新手,不小心发个空的.又发了一个已经提问结束了.问题是:
有以下代码;
classClassA{}
classClassB extends ClassA{}
classClassC extends ClassA{}
以及
ClassAp0 = new ClassA();
ClassBp1 = new ClassB();
ClassCp2 = new ClassC();
ClassAp3 = new ClassB();
ClassAp4 = new ClassC();
A:p0 = p1;
B:p1 = p2;
C:p1 =(ClassB)p3;
D:p2 =(ClassC)p4;
请问那个正确?并简要分析.

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
zzkang0206 发表于 2014-2-26 11:06
代码呢 把你的代码贴出来

实在不好意思..我是新手,不小心发个空的.之后又重新发了一个.请问这个可以删除吗?可以的话怎么删呢?
回复 使用道具 举报
正确的是 C,D
A:p0 = p1;  //P0是类A的对象,P1是类B的对象,所以不等
B:p1 = p2;  //P2是类C的对象,P1是类B的对象,所以也不等
C:p1 =(ClassB)p3;  //P1是类B的对象,P3表面是类A的对象,实际是通过多态的形式指向类B,
                                                所以P3强制向下转为类B是没问题的
D:p2 =(ClassC)p4;  //同理, D也是正确的

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
你的代码空格都没有,看着还真有点费劲。不过还好明白你的意思 。
A选项是可以赋值的,因为ClassB继承了ClassA,p1是父类对象指向了
B选项不能赋值的,一个是ClassB对象,一个是ClassC对象,不同类型不能赋值,会有类型异常
C、D选项跟A选项类似,可以赋值

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
位俊鹏 发表于 2014-2-26 22:00
实在不好意思..我是新手,不小心发个空的.又发了一个已经提问结束了.问题是:
有以下代码;
classClassA{}

看了他们的回复和你的贴子  真心没明白楼主问什么!
回复 使用道具 举报
kkopopo 发表于 2014-2-26 23:07
看了他们的回复和你的贴子  真心没明白楼主问什么!

面向对象的赋值与多态问题.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马