1 引用类型转化氛围两种 第一种是自动类型转换 第二种是强制类型转换。
2 下面我们用代码来学习两种转换:其中Animal是一个父类 Dog 和 Cat 是继承 Animal 的子类。
Animal animal =new Dog() ; //首先我们先构造一个Dog对象,然后用一个Animal类型变量animal引用它: if(animal instanceof Dog){ //inatance作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。 Dog dog = (Dog)animal ; // Dog对象被还原,强制类型转换 }else{ System.out.println("无法进行类型转换 dog"); } if(animal instanceof Cat){ /inatance作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。 Cat cat = (Cat)animal; }else{ System.out.println("无法进行类型转换 cat"); }
运行结果:无法进行类型转化 cat // 表明Dog 和Animal之间可以进行强制类型转换,而Cat 则不行
-------------------------------------------------------------------------------------------------------------------------------------
而当对程序做如下修改,则运行结果是什么都没有输出,表明Animal和Dog、Cat之间的发生的强制类型转换都没有问题。
Animal animal =new Dog() ;//父类引用地址animal指向子类 if(animal instanceof Dog){ Dog dog = (Dog)animal ; }else{ System.out.println("无法进行类型转换 dog"); } Animal animal2 = new Cat(); if(animal2 instanceof Cat){ Cat cat = (Cat)animal2; }else{ System.out.println("无法进行类型转换 cat"); } }
