对象的类型转换是我们在编程的时候经常会遇到的,java平台也是如此,比如一些基本类型的数据转型和复合数据的转换。
1. java语言中主要分为向上转型和向下转型,如何来了解和掌握这两者转型的关系呢?要想熟练掌握掌握这两种转型的方法以及它们容易出错的地方和容易让人误解的地方。首先我们先来举个例子,相信大家看完以后就会明白了。
比如说我们的现实的世界中有动物、猫科动物、老虎这三样东西,它们三者都有什么样的关系呢?如果用面向对象的思维来考虑的话,老虎是子类,猫科动物是老虎的父类。老虎对象就是猫科动物的对象,在这里要特别说明的一点就是:老虎是猫科动物的一个对象,那么猫科动物所具有的特征老虎都有,(用面向对象来说就是有相同的属性和行为),这种方法就是向上转型(通常也叫隐式转型)。如果是这样转型的话是没有问题的,我们人的正常思维也是正确的,编译器在编译的时候也不会报错的。但是在工作中我们经常会遇到向下转型的情况,但是这种向下转型时候编译器往往会报错,如果说猫科动物是老虎的话,这里应该是一个否命题(至少目前为止)在面向对象的世界里面,越是具体的东西它所具有的特征就越多,而月抽象的东西他的特性就越少,只是抽象了一些共性的东西。要确保对象向下转型的时候即编译器不会报错,又要确保具体的对象在抽象对象中也有,在这里,我们需要采用java的关键字来判断一下,instanceo,我们可以利用这个操作符来判断一个类是否实现了一个接口或者是一个类的子类。老虎 instanceo 猫科动物,它返回的是一个布尔值。如果返回true的话说明该对象是某个类的实例,false是反之。