public abstract class Animal { abstract void eat(); } class Cat extends Animal{ @Override void eat() { System.out.println("猫吃鱼"); } public void catchMouse(){ System.out.println("猫抓老鼠"); } } class Dog extends Animal{ @Override void eat() { System.out.println("狗吭骨头"); } public void watchHouse(){ System.out.println("看家"); } } class TestAnimal{ public static void main(String[] args) { Animal a = new Cat(); a.eat(); Cat c = (Cat)a; c.catchMouse(); Dog d = (Dog)a; d.watchHouse(); } }
ClassCastException :
强制类型转换的前提是父类引用指向的对象的类型是子类的时候才可以进行强制类型转换,如果父类引用指向的对象的类型不是子类的时候将产生java.lang.ClassCastException异常。