JAVA中的父类、子类转型

类和对象完全是两个概念。给你说个小例子吧。
Object o1 = new Object();
String o2;
在上面这种情况下,Object 是String的父类,按你说的,如果进行下列转换:
o2 = (String)o1;
这是错误的,因为o1本身是Object类的对象,没有String类的特性。我不知道这种
对象转换过去后会有什么用,只会出一个什么也不是的结果,而这些在C++中是可以的。

第二个:
Object o1 = new String("abc");
String o2 = new String("124");
对于这种情况,大家知道,o1和o2从引用类型上看,是两种类型,而从本质上看,他们
都是String类型的对象,所以,如果进行如下转换:
o2 = (String)o1;
这在java中是完全充许的,而这样的转换在实际应用中也是经常用到的。java并没有限制什么。

我承认,在有些语法上,功能上,java是比C++限制的更多了一些,但是这些限制本身都是有目的
的,比如说,为了提高程序的安全性,java中不可以对内存地址真接操作。

SO:

JAVA中无法把一个父类型转换成一个子类型,因为子类里添加了什么新方法和域,父类根本无法知道,这种转换非常危险,而且不确定性,反过来,子类型可以当作父类型用,前提是损失子类型的一些自有特性,这个是大范围转换成小范围,这个是安全的确定的,这个在JAVA中被允许

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值