Java | 向下转型与运行时类型识别
来源:互联网 发布:海湾编程软件 下载 编辑:程序博客网 时间:2024/06/05 11:41
向上转型(在继承层次中向上移动)会丢失具体的类型信息,但是向上转型是安全的,因为基类不会具有大于导出类的接口。所以,通过基类接口发送的信息保证都能被接受。
向下转型,即在继承层次中向下移动,能够获取类型信息,但是必须要有某种方法来确保向下转型的正确性,使不致于贸然转型到一种错误类型,进而发出该对象无法接受的消息。这样做是不安全的。在C++中,这就需要执行一个特殊的操作来获得安全的向下转型。但是在Java中,所有类型都会得到检查,即使我们只是进行一次普通的加括弧形式的类型转换,在进入运行期间时仍然会对其进行检查,以便保证它的确是所希望的那种类型。如果不是,就会返回一个ClassCastException(类型转换异常)。这种在运行期间对类型进行检查的行为称作“运行时类型识别”(RTTI)
class Useful{public void f(){System.out.println("Useful-f()");}public void g(){System.out.println("Useful-g()");}}class MoreUseful extends Useful{public void f(){System.out.println("MoreUseful-f()");}public void g(){System.out.println("MoreUseful-g()");}public void u(){System.out.println("MoreUseful-u()");}public void v(){System.out.println("MoreUseful-v()");}public void w(){System.out.println("MoreUseful-w()");}}public class RTTI{public static void main(String[] args){Useful[] x={new Useful(),new MoreUseful()};x[0].f();x[1].g();((MoreUseful)x[1]).u();((MoreUseful)x[0]).u();}}
编译时通过,运行时会抛出异常
阅读全文
0 0
- 向下转型与运行时类型识别
- Java | 向下转型与运行时类型识别
- 黑马程序员-Java 类型转换与向上、向下转型
- Java向上转型与向下转型
- JAVA中的向上转型与向下转型
- Java向上转型与向下转型(good)
- Java向上转型与向下转型
- Java向上转型与向下转型
- JAVA中的向上转型与向下转型
- JAVA中的向上转型与向下转型
- java向上转型与向下转型
- JAVA中的向上转型与向下转型
- JAVA向上转型与向下转型
- java向上转型与向下转型
- Java的向上转型与向下转型
- java向上转型与向下转型
- Java的向上转型与向下转型
- Java中的向下转型与向上转型
- src/tcmalloc.cc:284] Attempt to free invalid pointer 0x7ff4821267d0 caffe VideoCapture Mac
- 正则表达式
- 内存溢出应对:把图片固定大小赋值给bitmap
- c++11 中的 move 与 forward
- 网卡驱动程序实践
- Java | 向下转型与运行时类型识别
- 产品经理内功修炼——"动起来"的产品
- 反卷积网络在文本表征方面的应用
- Java:String、StringBuffer和StringBuilder的区别
- Java集合框架
- 爬取酷狗top500
- linux下系统启动时,几个配置文件 /etc/profile、~/.bash_profile 等几个文件的执行过程,先后顺序
- Java集合框架上机练习题
- java 聚合工程同级相互引入函数问题。interface无法引入与父类相同级别的common中的函数