标签:
1 public class Demo { 2 public static void main(String args[]) { 3 SuperClass superObj = new SuperClass(); 4 SonClass sonObj = new SonClass(); 5 // 下面的代码运行时会抛出异常,不能将父类对象直接转换为子类类型 6 // SonClass sonObj2 = (SonClass)superObj; 7 // 先向上转型,再向下转型 8 superObj = sonObj; 9 SonClass sonObj1 = (SonClass)superObj; 10 } 11 } 12 class SuperClass{ } 13 class SonClass extends SuperClass{ }
将第7行的注释去掉,运行时会抛出异常,但是编译可以通过。
1 public class Demo { 2 public static void main(String args[]) { 3 SuperClass superObj = new SuperClass(); 4 SonClass sonObj = new SonClass(); 5 // superObj 不是 SonClass 类的实例 6 if(superObj instanceof SonClass){ 7 SonClass sonObj1 = (SonClass)superObj; 8 }else{ 9 System.out.println("①不能转换"); 10 } 11 superObj = sonObj; 12 // superObj 是 SonClass 类的实例 13 if(superObj instanceof SonClass){ 14 SonClass sonObj2 = (SonClass)superObj; 15 }else{ 16 System.out.println("②不能转换"); 17 } 18 } 19 } 20 class SuperClass{ } 21 class SonClass extends SuperClass{ }
运行结果:
①不能转换标签:
原文地址:http://www.cnblogs.com/Coda/p/4419453.html