JAVA中的父类、子类转型

来源:互联网 发布:cda数据分析师报名时间 编辑:程序博客网 时间:2024/05/17 04:58
类和对象完全是两个概念。给你说个小例子吧。
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中被允许