java吧 关注:1,241,665贴子:12,713,256
  • 19回复贴,共1

父类子类调用求教,第一次遇到,不知道这是什么原理

只看楼主收藏回复

问题是这样的,父类有两个方法,子类都重写了,这时候子类在重写的A方法里面,用super调用父类被重写的A方法,在父类的A方法里面直接调用B方法,B方法也被子类重写了。这个时候运行,发现你B方法运行的是子类的内容。如下图:<br />
父类:<br />

子类:<br />

主方法:<br />

运行结果:<br />

求教,能否帮我解释下。


IP属地:福建1楼2015-08-28 17:26回复
    this代表当前对象吧


    IP属地:浙江来自Android客户端2楼2015-08-28 17:36
    收起回复
      学过染病乱,记不住


      来自iPhone客户端3楼2015-08-28 17:49
      回复
        不考虑实现
        你可以这样理解
        所有方法由具体的对象调用,若对象中有,则使用对象中的,否则沿继承链寻找。
        重点是:只要方法被调用,那么一定在具体的对象中被调用,别脑补什么子类指向父类的内存图。


        4楼2015-08-28 17:50
        收起回复
          不加this呢?


          IP属地:重庆来自Android客户端5楼2015-08-28 17:56
          收起回复
            不要向上转型试试


            IP属地:广东来自Android客户端6楼2015-09-13 20:39
            回复
              被覆盖了


              来自Android客户端8楼2015-09-14 00:12
              回复
                你在this下面加一句,把this打印出来分析一下不就出来了


                来自Android客户端9楼2015-09-14 00:46
                回复
                  多态性决定了,c定义是父类,实际地址是之类的实例外


                  IP属地:浙江来自Android客户端10楼2015-09-14 01:01
                  收起回复
                    由于重写,指向子类对象,通过super调用父类的方法


                    IP属地:几内亚来自Android客户端11楼2015-09-14 01:20
                    收起回复