1、概述
当在程序中执行向下转型操作时,如果父类对象不是子类对象的实例,就会发生ClassCastException异常,所以在做执行向下转型之前需要养成一个良好的习惯,就是判断父类对象是否为子类对象的实例。这个判断通常使用instanceof操作符来完成。
语法格式:myobject instanceof ExampleClass //myobject:某类的对象引用 ExampleClass:某个类
例子10.7
1 class Quadrangle_B{ 2 //SomeSentence 3 } 4 5 class Square extends Quadrangle_B{ 6 //SomeSentence 7 } 8 9 class Anything{ 10 //SomeSentence 11 } 12 13 public class Parallelogram_B extends Quadrangle_B{ 14 public static void main(String args[]) { 15 Quadrangle_B q = new Quadrangle_B(); //实例化父类对象 16 17 //判断父类对象是否为Parallelogram_B子类的一个实例 18 if (q instanceof Parallelogram_B) { 19 Parallelogram_B p = (Parallelogram_B)q; 20 System.out.println("父类对象Quadrangle_B为Parallelogram_B子类的一个实例"); 21 } 22 23 //判断父类对象是否为Square子类的一个实例 24 if (q instanceof Square) { 25 Parallelogram_B p = (Parallelogram_B)q; 26 System.out.println("父类对象Quadrangle_B为Square子类的一个实例"); 27 } 28 29 System.out.println("打印完毕!"); 30 31 //由于q对象不为Anything类的对象,所以这条语句是错误的 32 //System.out.println(q instanceof Anything); 33 34 } 35 }