无法进行类型转换

来源:10-2 多态中的引用类型转换

陆星崖

2019-02-19 21:23

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类型的空间,为什么还是无法进行转换

写回答 关注

2回答

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

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

    霸气小肆毛

    创建的Cat型并没有改变animal指向Dog类型的这个问题,所以结果还是无法进行转换

    2019-02-21 23:09:44

    共 1 条回复 >

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

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

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530553 学习 · 6091 问题

查看课程

相似问题