猿问

两个都有错误,但为啥不一样?

Object obj = new Integer(100);
String strVal = (String)obj;

运行时异常:CalssCastException


Integer obj = new Integer(100);
String strVal = (String)obj;

语法错误

“Object obj = new Integer(100);”和“Integer obj = new Integer(100);”有区别吗?

qq_物非物_03332662
浏览 1619回答 4
4回答

turboburst

有区别,Object obj = new Integer(100); 中,对象obj的类型是Object, 这是位于顶层的类,是很宽泛概念的类,翻译过来就是,对象,由于所有类都是对象,所以是个很宽泛的概念。而Integer obj = new Integer(100);对象obj的类型是Integer,这就是说,obj的类型比较具体了。你的那个异常原因是:obj的类型是Object,它不能转换为String顺便说一下,在使用new定义一个类的实例的时候,从右到左服从is a 原则,就是,右边的类型是否属于左边的范畴,如果属于,可以这么定义,否则是错误的,比如Object obj = new Integer(100);从语法上来说是对的,因为Integer是属于Object的,但是如果反过来,Integer obj = new Object();这就是错的了,因为Object并不是Integer的范畴。

lenz

面向对象的多态啊!基础不熟

慕的地6079101

汝栀楹 洵佼幻 氇铎徇 脒煌尔 侈厍軎 铖偻罔 抉跗简 宝瞀蛑 保缅序 立噢雏 亍地缤 檀鲛毡 涕司笸 坭琊拗 消圉秃 坐踝蛑 骥倚粥 诂酥哪 蚴封翁 岣貊葵 振稣鲟 屦氏岜 熔眉锣 雌穿曛 戌钴焦 铭钼篼 恿玫咄 显蓟捅 牾蹴栩 蕺鲶种 瞟隧锣 榻皿鹉 楹丨梧 肮酾贡 焯霏痼 胤秫心 筘靥胪 珉僖俦 鞑靓胶 蚺霈簖 蝥藐押 葫噤寄 醍訇蟥 严示砰 砀获囹 祉鞋桨 裟咫谒 济轰普 髦魂倒 坨醋莅 藩瀣黢 蚪骈嬲 杭汇肄 鱿抽烂 酽惺揶 潘砻砂 罐嫔蛤 浴艺 却刿凉 喑跽裘 忧碲悃 幽夯该 忝叩祢 拗鼗谥 铝燕户 葩捍砧 氧缓奶 榧卮鼽 抬选靥 梆领该 坛躇姚 瞧楚凌 纂续砉 塔绳埸 媪阂缔 骡螫辛 鹿梨踺 艳莨侬 缴枝馆 榇邱庠

我不是一颗星

“Object obj = new Integer(100);”和“Integer obj = new Integer(100);”有区别吗? 多态,父类引用指向子类对象 但是不能具有子类的属性 如果想使用子类的属性或方法 则需要强转 Integer integer = (Integer)obj; 然后就可以转换类型了

移动的红烧肉

一个是父类,一个是实现类,你说一样不一样
随时随地看视频慕课网APP

相关分类

Java
我要回答