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中不可以对内存地址真接操作。
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中被允许
- JAVA中的父类、子类转型
- java父类子类上下转型总结
- Java向上转型与向下转型(子类的对象赋给父类的)
- java对象转型(casting)-父类引用指向子类对象注意点
- java中的子类和父类问题
- java中的子类和父类问题
- 对象的转型(在父类与子类之间)
- 父类引用调用子类的方法 反射和转型
- 指向子类对象的父类引用(向上转型)
- java中的类的向上转型向下转型问题
- java基础:在子类的构造函数中为什么必须调用父类的构造函数(与转型)
- java中的对象转型
- Java中的上下转型
- Java中的对象转型
- java中的上下转型
- Java中的向下转型
- java中的数据转型
- Java中的自动转型
- 重载new和delete方法实现C++内存安全
- opengl的PIXELFORMATDESCRIPTOR
- HEVC核心编码技术之一.图像的编码划分
- c#网络编程
- 一个真实的敏捷开发案例
- JAVA中的父类、子类转型
- Dev C++中的错误的解决[Linker error] undefined reference to `__cpu_features_init' -chu
- 围棋与OOAD
- C++学习笔记(五)
- VSRS3.5配置问题,error LINK2019 _cvInpaint error LINK1120
- HEVC核心编码技术之二.帧内预测
- CUDA通信机制
- 信息论
- AJAX 状态值(readyState)与状态码(status)详解