问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java:向下转型干吗的有什么用处?

发布网友 发布时间:2022-05-29 03:05

我来回答

1个回答

热心网友 时间:2024-12-11 21:49

向下转型 将超类的引用强制转换为子类类型就叫做向下转型。 注意:将超类的引用赋给为子类类型的变量(没有进行显示地强制转换)是一个编译 错误。 例子: 还是上面的for循环代码 for(int i=0;i<x.length;i++) { if(x[i] instanceof MoreUseful2) // 判断instanceof左边的对象是否是右边的类的实例。 { MoreUseful2 moreuseful2 = (MoreUseful2)x[i]; // 向下转型 moreuseful2.u(); } x[i].g(); } 分析:x[i]可以代表具体的Useful对象类型,当它是MoreUseful2或ExtendsMoreUseful2 对象类型时,就可以调用该对象的额外方法u(),v(),w(),也就是当对象x[i]和Moreusful对 象存在is-a关系时,才可以进行向下转型,如果要转换的对象类型与指定的对象类型不 存在is-a关系时,会产生一个ClassCastException异常。 总之: 向下转型时,对象只能强制转换为其本身类型或者其超类类型。比如, 当x[i]ExtendsMoreUseful2对象时,可以把他转换为其本身ExtendsMoreUseful2对象类 型,也可以把它转换为其基类MoreUseful2类型。但是在编译时候还不知道这个x[i]是代 表那个具体对象类型只知道这个x[i]是基类类型引用,所以要用这样的形式" (想要要得 到的类型)x[i] " 进行转换。x[i]在这里是就我这个例子来说明的,你也可以使用其它的 英文代替,其意义是一切符合规定的需要被转换的对象。 下面还有个关于向上转型和向下转型的例子, abstract class ClassAbstract1{} class ClassDerived1 extends ClassAbstract1 { public void play1() { System.out.println("play1() is in the ClassDerived1"); } } abstract class ClassAbstract2{public abstract void play2();} class ClassDerived2 extends ClassAbstract2 { public void play2() { System.out.println("play2() is in the ClassDerived2"); } } public class E14_UnCast { public static void playDemo1(ClassAbstract1 ObjectParameter) { ((ClassDerived1)ObjectParameter).play1();//向下转型,可以调用导出类中的扩展方法 } public static void playDemo2(ClassAbstract2 ObjectParameter) { ObjectParameter.play2();//向上转型,可以调用导出类中的覆盖方法 } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ClassAbstract1 classabstract = new ClassDerived1(); playDemo1(classabstract); ClassAbstract2 classabstract2 = new ClassDerived2(); playDemo2(classabstract2); } } 运行结果: play1() is in the ClassDerived1 play2() is in the ClassDerived2
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
网络宣传文案心碎,句句获赞! 关于朋友圈上万人点赞转发的说说 人生看的很透彻的经典句子 超现实超扎心的说说大全2019最新 心脏血管堵塞吃什么食物 投资理财有什么前景 pp理财什么情况 P2P理财行业的前景如何? 中国目前的财富管理现状是什么情况? 呼吸皮沙发寿命多久 “皮沙发的呼吸寿命” 呼吸皮沙发寿命多久 java向上转型和向下转型和强制转型有什么用?在什么时候用? java中对象的向上向下转型在开发中用于实现什么功能 会长是女仆 中美咲的配音者是谁 还配过那些动画? 请问在电脑上把内存卡上的照片导入是什么意思?怎样将导入电脑里的照片删... 刘亦菲和刘诗诗什么关系啊 怎么长的那么像 刘亦菲有什么缺点? 继赵露思后刘亦菲版“覃川”来了,哪位更胜一筹呢? 刘亦菲的亲人到底有多好看,为何刘亦菲说自己是家里最丑的人? 和刘亦菲在一起的女星是谁啊? 经史百家杂钞和古文辞类纂哪个更好 内存卡上的照片怎样下载到电脑上 续古文辞类纂的蒋瑞藻编纂版 《古文辞类纂》姚鼐著。这本书哪里有卖的?谢谢各位! 续古文辞类纂的王先谦编纂版 续古文辞类纂的黎庶昌编纂版 刘亦菲的妹妹是谁 《古文辞类纂》epub下载在线阅读,求百度网盘云资源 ...号码网 泉州移动号码 泉州优号 泉州靓号网 泉州移动优号 在哪里有... 苏有朋版《倚天屠龙记》演张无忌母亲的演员的名字叫什么? ...的西瓜视屏直播已经开放了商品橱窗,为什么电脑端却不能直播带货... java中向上转型和向下转型是用来干什么的 做爱多了阴唇是什么颜色的?处女的阴唇又是什么颜色的? 适马35 1.4 怎么样?适马35 1.4 好吗 调整显卡风扇转速对显卡有伤害吗 java向下转型有什么 好处 给下代码提示吧。 适马35 1.4和30 1.4哪个好? 为什么存在储存卡上的照片在电脑上看不到,只能在照相机里才能看到?_百 ... 晋城软件开发:Java培训哪家好 晋城爱问分类 适马35 1.4 跑焦怎么调整 适马35/1.4跑焦可以通过调焦底座解决吗 柠檬插座为什么插不进去? lieve什么意思 请问除《古文观止》外还有那些适于学习的古文集? “就算是believe中间还有一个lieve” 什么意思 l( ) ( ) ve I be lieve。 是什么意思? 什么英文单词的中间是lie? 为什么believe中也有lie,为什么friend中也会end? 网上有人将believe分成几个单词,组成一句话挺有意义的,是什么来的... 求西游记1~5回赏析,我不要主要内容啊,是评价这个回