引用类型转换:
向上类型转换(隐式/自动类型转换),是小类型到大类型的转换,不存在风险
向下类型转换,是大类型到肖类型的转换,存在风险
instanceof来解决引用对象类型的问题,避免类型转换的安全问题
样例代码:父类Animal,子类Dog省略
测试类:
从上面可以看出小类型是可以转化为大类型的,是安全的;
大类型转化为小类型则不安全。
使用instanceof来判断一个大类型对象强制转化为小类型是否会溢出,即不安全。
样例代码:
父类:
package com.imooc;
public class Animal
{
public void bark()
{
System.out.println("I can bark!");
}
}
子类Dog类:
package com.imooc;
public class Dog extends Animal
{
public void bark()
{
System.out.println("I can bark as a dog");
}
}
子类Cat类:
package com.imooc;
public class Cat extends Animal
{
public void bark()
{
System.out.println("I can bark like as cat");
}
}
测试类:
package com.imooc;
public class Initial
{
public static void main(String[] args)
{
Dog obj1 = new Dog();
Animal obj2 = obj1;
//小类型到大类型的类型转换
if(obj2 instanceof Dog)
{
Dog obj3 = (Dog)obj2;
obj3.bark();
}
else
{
System.out.println("无法转换成Dog类型");
}
if(obj2 instanceof Cat)
{
Cat obj3 = (Cat)obj2;
obj3.bark();
}
else
{
System.out.println("无法转换成Cat类型");
}
}
}
运行结果:
有意思的类型转换,改日继续,哈哈!