向上转型,向下转型

向上转型,就是将其他类型转对象转为Object类型,向下转型则相反。

例:

复制代码
 1 public class Test {
 2    private Object b;//设置object类型成员变量
 3    public Object getB(){
 4        return b;
 5    }
 6    public void setB(Object b){
 7        this.b = b;
 8    }
 9    public static void main(String [] args){
10        Test test =   new Test();
11        test.setB(new Boolean(true));//向上转型
12        System.out.println(test.getB());
13        test.setB(new Float(12.3));
14        Float f = (Float)(test.getB());//向下转型
15        System.out.println(f);
16        test.setB(new Float(12.3));
17        Integer f1 = ( Integer)(test.getB());//向下转型,抛出异常
18        System.out.println(f1);
19        
20    }
21 }
复制代码

  运行结果:

  true
  12.3
  Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
  at fanxing.Test.main(Test.java:19)

   在上述例子中,Test类中定义了私有的成员变量b,它的类型为Object类型,同时为其定义了相应的set与get方法,将new Boolean(true)对象作为setB()方法参数,由于setB()方法的参数类型为Object,这样就实现了“向上转型”,同时在调用getB()方法的时候,将getB()方法返回的Object对象以相应的类型返回,这就是“向下转型”,问题通常会出现在这里,因为“向上转型”是安全的,而“向下转型”操作时用错了类型,或者没有执行该操作,就会出现异常。

posted on   程序员简笔  阅读(533)  评论(0编辑  收藏  举报

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示