题目如下:

interface Foo{}
class Alpha implements Foo{}
class Beta extends Alpha{}
public class Delta extends Beta{
public static void main(String[] args){
Beta x = new Beta();
//insert code here
}
} 将下面哪一行代码插入如上所示的位置中会导致java.lang.ClassCastException:
A. Alpha a = x;
B. Foo f = (Delta)x;
C. Foo f = (Alpha)x;
D. Beta b = (Beta)(Alpha)x;

java.lang.ClassCastException是指类型转换异常。一般发生在强制类型转换时,若对象真正的实例类型小于转换后的类型,在运行时就会产生ClassCastException。

在这道题中x是一个Beta实例,这是编译时就决定了的。所以x可以在Foo、Alpha、Beta等同级或低级类型中随意转换。但是他不能转为Delta类,因为它不具备Delta类的行为特征。

在这里神展开了下:代码世界其实是比较严格的,一级级的继承形成了一种金字塔式的结构。底层是最原始的超类或接口,只有最基本的技能,顶层则吸收了向下每一层的技能还演化出了自己独有的技能。当一个对象生于金字塔的某一级以后,一般只能在出生的这一级或较低的级别生存。即使它换了一个伪装,虽可以瞒过一时,但是真的工作时就必然会因为技能不足而露出马脚。不过也有些真正的超级对象,它们虽然天然高贵,但是因为生于较低等级,平时只能做这个等级或较低等级允许做的事情。可是当需要时,它们也会穿上红色内裤,披上斗篷,完成高等级才能完成的事情。

class Man{
public int age = 100;
public void move(){
System.out.println("I'm running...");
}
} class Superman extends Man{
public int age = 10000;
public void move(){
System.out.println("I'm flying...");
}
} public class Test{ public static void main(String[] args){
Man clark = new Superman(); System.out.println(clark.age);
clark.move();
} }

执行结果:

scjp考试准备 - 11 - 类型转换2的更多相关文章

  1. scjp考试准备 - 10 - 类型转换

    题目为如下代码的执行结果: class Building{} public class Barn extends Building{ public static void main(String[] ...

  2. scjp考试准备 - 2 - 逻辑运算及类型转换

    判断如下代码的执行结果: public class Spock{ public static void main(String[] args){ Long tail = 2000L; Long dis ...

  3. scjp考试准备 - 6 - 父类构造器的引用

    题一,如下代码的执行结果: class Person{ String name = "No name"; public Person(String nm){name = nm;} ...

  4. scjp考试准备 - 7 - Java构造器

    题目——如下代码的执行结果: class Hello{ String title; int value; public Hello(){ title += " World!"; } ...

  5. scjp考试准备 - 5 - 重载和重写

    如下代码,在所指示的位置插入代码能够正常编译: class Alpha{ public void bar(int... x){}; public void bar(int x){}; } public ...

  6. scjp考试准备 - 4 - 关于数组

    好吧这道题我丢脸了,竟然做错了. 如下程序的输出结果是: class Alligator{ public static void main(String[] args){ int[]x[] = {{1 ...

  7. scjp考试准备 - 3 - 关于Arrays

    判断如下程序的最终输出值: import java.util.*; public class Quest{ public static void main(String[] args){ String ...

  8. scjp考试准备 - 1 - 循环控制

    判断如下代码最后的执行结果. public class Breaker{ static String o = ""; public static void main(String[ ...

  9. 喵哈哈村的魔法考试 Round #11 (Div.2) 题解

    喵哈哈村的星星与月亮(一) 打表发现答案就等于a*b%mod 注意a*b可能爆longlong #include<bits/stdc++.h> using namespace std; c ...

随机推荐

  1. 【工具】SwitchHost的使用

    一.问题: 更改Host后,再次启用或者关闭启动Host,Host被恢复原状.原因是修改Host的顺序顺序有问题. 二.解决步骤: 修改Host之前,先点击右下角,关闭所有Host(白色的部分在下面表 ...

  2. 哈哈哈 迫于c#的语言特性java才加的注解

  3. java根据方法名动态调用invoke方法!

    public class Activity { public void deal(String name, long id) { System.out.println(name + id + &quo ...

  4. When an HTTP server receives a request for a CGI script

    cgicc: Overview of the Common Gateway Interface https://www.gnu.org/software/cgicc/doc/cgi_overview. ...

  5. event chrome firefox 获取点击对象的 id 类

    <!doctype html><html lang="en"><head> <meta charset="UTF-8" ...

  6. SOE不能进入断点调试

    一.前言 任何程序开发,如果不能进入断点调试,是非常的痛苦的. 如果有过SOE开发经验的人都知道,SOE开发过程中调试是非常麻烦的.任何在SOE开发模板中的修改都需要重新编译工程,重新生成.soe 文 ...

  7. Andrew Ng机器学习编程作业:Logistic Regression

    编程作业文件: machine-learning-ex2 1. Logistic Regression (逻辑回归) 有之前学生的数据,建立逻辑回归模型预测,根据两次考试结果预测一个学生是否有资格被大 ...

  8. Pantone色卡——安全装备的面板、丝印及铭牌颜色设计参考

    可以参考上传文件<Pantone色卡电子版下载>

  9. Oracle SQL 外键测试

    测试SQL 创建SQL     t1为主表      t2为子表 create table t1(insert_date number,id int) create table t2(insert_d ...

  10. C# 创建单例你会几种方式?

    关于为什么需要创建单例?这里不过多介绍,具体百度知. 关于C#  创建单例步骤或条件吧 1.声明静态变量:2.私有构造函数(无法实例化)3.静态创建实例的方法:至于我这里的Singleton是seal ...