• 梁大瓜
    2019-07-06
    但是这样的话为什么Java还允许父类的引用可以指向子类的对象呢?既然不管引用是啥,最后在执行的时候this指针指向的都是对象实际上引用的类,这个存在的意义是啥呢?我之前自己学Java面向对象的时候就是在这个地方被搞的很晕。

    作者回复: 恭喜你两分钟就自己悟到了。在这里我再总结一下这三个模式。

    1)父类引用指向子类对象,可以调用只在父类中的方法(继承)
    2)父类引用指向子类对象,可以调用子类覆盖了父类的方法(覆盖,多态)
    3)父类引用指向子类对象,在1)和2)这两种情况下。如果这个方法的代码中又调用了别的方法,那么还是会遵循这个规则。举个例子,如果父类中有m1,m2两个方法。子类覆盖了m2方法。那么如果调用m1,则m1中调用的m2会是子类中定义的m2


    
     5
  • 消融
    2019-07-21
    老师你说从this理解感觉会更乱,会让人理解为传进去的引用指向对象决定了实际采用的方法。这不是有个前提吗,引用父类的方法被指向的子类对象覆盖了才是这样吧。

    作者回复: 学习的目的是自己理解消化,如果 this 的方式对你的理解没有帮助,可以忽略,建立自己的知识体系和理解方式。

    
    
  • 消融
    2019-07-21
    老师你说的先从指向的对象找起,没有再找父类。不是应该从引用类型找起再去子类里找在,子类覆盖则替换。按老师说的万一子类有父类没有那不就?
    
    
  • 梁大瓜
    2019-07-06
    哦,我好像明白了。这么写就是为了实现多态,子类里找不到的方法去父类里找。

    作者回复: 嗯呐,还有别的点,详见你上一条问题的回复哈。

     1
    
我们在线,来聊聊吧