java吧 关注:1,195,214贴子:12,614,912
  • 9回复贴,共1

一道关于多态的题

只看楼主收藏回复

如图是题目,按我的认知,父类引用子类后子类对象属性会丢失,但是我重新先将子类转换为父类,再转换为子类,发现属性并没有丢失,而且比较时候上面创建的所有对象地址都是相等的。
所以为什么转型后再转回来数据不会丢失,有没有大佬做个解释。




IP属地:上海来自Android客户端1楼2020-10-30 10:15回复
    我个人觉得他的数据是不是将子类对象刚在一个区域,父类引用时候直接从子类存放区域拿,如果我再想转回子类那么我直接给地址就行


    IP属地:上海来自Android客户端2楼2020-10-30 10:17
    收起回复
      来个大佬


      IP属地:上海来自Android客户端3楼2020-10-30 10:22
      回复
        铁子,学习啦


        IP属地:上海来自Android客户端4楼2020-10-30 10:22
        回复
          我是一个小白 我猜的
          Animal(父类)派生了cat(子类)子转父 子类总是父类的实例,所以此时Animal里的cat和你new的cat是相等关系,然后父转子 因为你父类里的子类内存地址就是cat 所以转出来就是cat的实例。如果你在派生一个dog 把dog转给Animal 在转成cat应该会报空指针或者ClassCastException


          5楼2020-10-30 10:46
          收起回复
            不知道你在疑惑什么,大概是把java当成c++了吧。java里面是引用,你根本没有干什么类型转换的玩意儿


            IP属地:广东来自Android客户端7楼2020-11-03 10:48
            收起回复