zoukankan      html  css  js  c++  java
  • scjp考试准备

    题目如下:

    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();
          }
    
    }

    执行结果:

    image

  • 相关阅读:
    minicap编译示例
    uniapp H5项目中使用腾讯地图sdk
    腾讯地图打车乘客端小车平滑移动-安卓篇
    地图定位打卡功能示例
    腾讯位置服务个性化图层创建及发布
    腾讯位置服务GPS轨迹回放
    使用腾讯地图实现汽车沿轨迹行驶功能
    地图GPS轨迹录制
    腾讯地图实现微信小程序地图定位教程
    基于腾讯地图定位组件实现周边POI远近排序分布图
  • 原文地址:https://www.cnblogs.com/amunote/p/3948324.html
Copyright © 2011-2022 走看看