黑马程序员技术交流社区

标题: 类的继承,看晕我了~~有本事你来??? [打印本页]

作者: 青龙李坤    时间: 2015-6-3 23:53
标题: 类的继承,看晕我了~~有本事你来???
问题:当插入一下代码时在提示的地方,哪个声明将出现运行时异常???
class A{}
class B extends A{}
class C extends A{}
public class Test{
    public static void main(String [] args){
        A x=new A();
        B y=new B();
        C z=new C();
//插入代码???
    }
}
(a) x=y;
(b) z=x;
(c) y=(B)x;
(d) z=(C)x;
(e) y=(A)x;

作者: 唐海    时间: 2015-6-4 00:15
c    d   都是运行时异常吧
作者: 青龙李坤    时间: 2015-6-4 23:28
a能正常运行,b,e编译错误,因为试图为引用分配一个不兼容的类型.
作者: 青龙李坤    时间: 2015-6-4 23:30
对的,你理解的非常好!
作者: 刘鹏伟    时间: 2015-6-4 23:57
赞赞   
作者: 杜黎明    时间: 2015-6-5 00:03
。。。。。赞一个
作者: rexih    时间: 2015-6-5 00:09
(a) x=y;//父类引用指向子类对象,可行
(b) z=x;//子类引用不能直接指向父类对象。
(c) y=(B)x;//c,d都是把父类对象强转成子类赋给子类引用,但是类型是对的,编译时候是可以通过的,但是实际使用不适合的方法的时候还是会异常
(d) z=(C)x;
(e) y=(A)x;//问题同b,子类引用指向的父类对象。
作者: guanyang    时间: 2015-6-5 00:19
我想在“插入代码”那里加上IF,if(插入代码){}
作者: guanyang    时间: 2015-6-5 00:20
我想在“插入代码”那里加上IF,if(插入代码){  如果相等,输出1,如果不相等输出2}
作者: LoveMyself    时间: 2015-6-5 00:24
这道题不错
作者: 守株人    时间: 2015-6-5 00:31
赞一个。。。
作者: hnyzhlq    时间: 2015-6-5 18:24
c、d是把父类强转成子类,编译是可以通过的,但是使用子类有而父类不具备的功能时会报错。
我有个问题是如果把子类强转父类引用编译是否能通过?
作者: 飘过的云    时间: 2015-6-5 21:34
学习了,父类引用能指向子类对象,子类引用不能指向父类对象,强制转换,要符合现实,猫是动物,狗也是动物,可以把本来是猫的动物,强制转换为毛,但不能把原本是狗的动物,转换成猫
作者: 1315317959    时间: 2015-6-5 21:59
new出来的应该地址值不一样吧  这样x=y     x=z不正确吧
作者: 路途遥远    时间: 2015-6-5 22:02
在读.....
作者: 热血    时间: 2015-6-5 22:05
7楼正解
作者: 银哥    时间: 2015-6-5 22:12
看一下这道题
作者: wwb1105    时间: 2015-6-5 22:13
学习学习  !~~
作者: Tangtang    时间: 2015-6-5 22:17
这个嘛,绕久了是有些晕




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2