问答详情
源自:10-2 多态中的引用类型转换

无法进行类型转换

public static void main(String[] args) {

// TODO Auto-generated method stub

// Animal obj1 = new Animal();

// Animal obj2 = new Dog();

// Animal obj3 = new Cat();

// //Dog obj3 = new Animal();出错,不能用子类的引用指向父类的对象

// obj1.eat();

// obj2.eat();

// obj3.eat();

//obj2.bite();//出错,父类引用指向的子类对象只能调用重写和继承的方法,不能引用子类独有的方法

Dog dog = new Dog();

Animal animal = dog;//自动类型提升  向上类型转换

Dog dog2 = (Dog)animal;

Cat cat = new Cat();

if(animal instanceof Cat){

Cat cat2 = (Cat)animal;//因为最初创建的空间为Dog类型的空,故无法在其中实现Cat类型的转换

}else{

System.out.println("无法进行类型转换");

}

}

但是我在老师得代码中又新建了一个Cat类型的空间,为什么还是无法进行转换

提问者:陆星崖 2019-02-19 21:23

个回答

  • qq_慕数据8234616
    2019-02-19 22:14:45
    已采纳

    animal 没有指向 cat。。所以 animal instanceof Cat  还是 false,所以无法进行转换

  • 慕先生6779645
    2019-04-01 15:39:04

    老师只是讲了一种避免类型转换的安全性问题,的判断