java吧 关注:1,244,800贴子:12,721,437

再考大家一个基础问题

只看楼主收藏回复

输出


1楼2016-03-08 14:43回复



    IP属地:四川来自抱抱配图2楼2016-03-08 14:50
    收起回复
      是不是false,因为地址不同吧


      IP属地:安徽来自Android客户端3楼2016-03-08 15:18
      收起回复
        难道不是true


        IP属地:湖北来自iPhone客户端4楼2016-03-08 15:22
        收起回复
          其实就是不存在super这个对象,比如你用this能够点出方法,用super就不行,所以父类里getThis返回的对象是调用getSuper这个对象。这种面试题理解以后记住就行了,以后不怕再被搞翻


          IP属地:浙江7楼2016-03-08 15:33
          收起回复
            苹果是水果,但水果不是苹果,苹果有水果的所有特性!


            IP属地:广东9楼2016-03-08 15:39
            收起回复
              我猜是false,毕竟你没覆盖父类的方法,所以会执行父类的getThis()。只要引用不一样,这两个对象==比较肯定是false,退一步讲,即使你覆盖父类的方法,得到的对象也不可能和new的对象有同一个引用,不管你怎么搞,就不可能为true。


              IP属地:广东10楼2016-03-08 15:56
              收起回复
                false ,因为a指向的是Apple对象,f指向的是包含在Apple里的Fruit对象。


                来自iPhone客户端11楼2016-03-08 16:01
                收起回复
                  true


                  来自Android客户端12楼2016-03-08 16:18
                  收起回复
                    我也是在自学,考虑了一下,这个方法的调用其实就相当于是 Fruit f= a; f和a指向同一个对象,只不过f看到的只是a的fruit部分,看不到apple部分。 因为它们指向同一个对象,所以返回true。


                    来自iPhone客户端13楼2016-03-08 17:56
                    收起回复
                      请指教,不懂


                      IP属地:北京来自Android客户端14楼2016-03-08 18:09
                      收起回复
                        super调用父类的方法返回的是this,父类的this和子类的this是一样的,所以为true;super.getThis()写成this.getThis()也可以


                        IP属地:广东15楼2016-03-08 18:16
                        收起回复
                          坐等大神解答


                          来自iPhone客户端16楼2016-03-08 18:19
                          收起回复
                            看这个图就懂了吧,其实调用父类的getThis方法返回的就是apple的对象,所以是true。


                            17楼2016-03-08 18:36
                            收起回复