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

为什么可以从子类直接转换到父类,子类不是可以有自己的方法么?那这个方法要转换到父类不是会失败么?

为什么可以从子类直接转换到父类,子类不是可以有自己的方法么?那这个方法要转换到父类不是会失败么?

提问者:慕粉00524729 2017-01-22 23:01

个回答

  • 原木兮
    2017-02-28 21:14:17

    |-------|
    | 父类   |  
    |       |
    ---------
    |       |
    |子类    |
    |额外    |
    |       |
    ---------
    如上图所示,
      如果父类new 一个对象,那么得到的对象占用的空间就是上图中”父类“那一块,此时如果转换成子类,那么就会用到“子类额外”那块,而这块内存没有申请,当访问的时候就会出错。
      如果是子类new 一个对象,那么得到的就是整个上图的空间,转化为父类的话,只可能会访问到上面的部分,而此块内存是申请了的,所以访问不会出错。

      子类转换为父类后,子类自己的方法在父类中无法访问,因为父类中没有定义。

  • 慕粉00524729
    2017-01-23 01:33:15

    没懂。。

  • 一步错两步错步步错
    2017-01-22 23:30:04

    Java中父类强制转换成子类的原则:父类型的引用指向的是哪个子类的实例,就能转换成哪个子类的引用