java 向下转型有什么用_java向下转型,有啥作用。求解

java向下转型,有啥作用。求解

关注:197  答案:2  mip版

解决时间 2021-01-25 08:10

e6cb1a03ad541b3098697807b7bf1798.png

提问者删除记忆里的你

2021-01-25 03:12

java向下转型,有啥作用。求解

最佳答案

e6cb1a03ad541b3098697807b7bf1798.png

二级知识专家空虚的心

2021-01-25 03:29

向下转型

将超类的引用强制转换为子类类型就叫做向下转型。

注意:将超类的引用赋给为子类类型的变量(没有进行显示地强制转换)是一个编译

错误。

例子:

还是上面的for循环代码

for(int i=0;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();//向上转型,可以调用导出类中的覆盖方法

}

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

全部回答

e6cb1a03ad541b3098697807b7bf1798.png

1楼守給你的承諾

2021-01-25 03:35

向下转型获得子类对象。可以调用子类中具体的功能。

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值