为了账号安全,请及时绑定邮箱和手机立即绑定

那今天这个课程的类型转换,到底有什么用呢,或者在哪里会用到

    Dog dog=new Dog();
    Animal animal=dog;//自动类型提升 向上类型转换
    Dog dog2=(Dog)animal;//向下类型转换 强制类型转换
    if(animal instanceof Cat){
     Cat cat=(Cat)animal;
    }else{
     System.out.println("无法进行类型转换");
    }


正在回答

2 回答

当子类有的方法,父类中没有的时候,这时候就需要将父类转换为子类,这样就可以使用子类里有父类里没有的方法了。

4 回复 有任何疑惑可以回复我~
#1

AI智能人工 提问者

非常感谢!
2018-07-22 回复 有任何疑惑可以回复我~
#2

AI智能人工 提问者

能举个例子吗
2018-07-22 回复 有任何疑惑可以回复我~
#3

qq_个性_2 回复 AI智能人工 提问者

Fruit类里有grow()方法,Apple类继承自Fruit类,重写了Fruit类里的grow()方法,并且自己增加了一个sing()方法。这时如果有一个父类型(Fruit)的引用f指向子类型(Apple)的对象(Fruit f = new Apple()),这时的f里就只有一个grow()方法,并不能使用sing()这个方法,因为f是Fruit的引用,当使用多态方式调用方法时,首先检查父类中是否有 grow()方法,如果没有则编译错误;如果有,再去调用子类的 grow()方法。所以如果这时想调用sing()方法的话,就得向下强制类型转化Apple a = (Apple)f。
2018-07-22 回复 有任何疑惑可以回复我~
#4

qq_个性_2 回复 AI智能人工 提问者

是谁的引用才能调用谁的方法。是Fruit的引用就不能调用Apple里的grow()方法,只有强制转换成Apple类型的引用才能调用grow()方法。
2018-07-22 回复 有任何疑惑可以回复我~
#5

qq_个性_2 回复 AI智能人工 提问者

是谁的引用才能调用谁的方法。是Fruit的引用就不能调用Apple里的grow()方法,只有强制转换成Apple类型的引用才能调用grow()方法。
2018-07-22 回复 有任何疑惑可以回复我~
#6

慕无忌0988186 回复 qq_个性_2

这样做的意意是什么,为什么不直接调用子类的方法
2018-07-25 回复 有任何疑惑可以回复我~
#7

慕村2485551 回复 qq_个性_2

要是能分行写就好了 看的太有点乱
2018-09-12 回复 有任何疑惑可以回复我~
#8

qq_不过六级不改名i_opIMVZ 回复 qq_个性_2

我想问一下,如果在mian函数里想调用sing方法,直接创建子类的对象,进行调用不就可以了吗,为什么一定要创建父类对象,再让他强制类型转化呢?
2018-10-18 回复 有任何疑惑可以回复我~
查看5条回复

说的非常好,用例举的非常实用

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

那今天这个课程的类型转换,到底有什么用呢,或者在哪里会用到

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信