资讯专栏INFORMATION COLUMN

记一次牛客java试题思考所得

OBKoro1 / 3369人阅读

摘要:至此,类实例化完成。块中会先行发生这一点有点迷,明明调试的顺序是先执行里的语句导致然后才跳到,然后执行该方法返回的值还是原先的,感觉能从函数调用栈帧角度说得通,但这里不熟,未来再回来解疑。

先上题目:
函数ExtendsTest.main()执行后的输出:

public class ExtendsTest {

    public static void main(String[] args) {
        System.out.println(new B().getValue());
    }

    static class A {
        protected int value;

        public A(int value) {
            this.value = value;
        }

        public int getValue() {
            try {
                value++;
                return value;
            } finally {
                this.setValue(value);
                System.out.println(value);
            }
        }

        public void setValue(int value) {
            this.value = value;
        }
    }

    static class B extends A {

        public B() {
            super(5);
            setValue(getValue() - 3);

        }

        @Override
        public void setValue(int value) {
            super.setValue(2 * value);
        }
    }
}

为了方便调试,我们先对B类的构造器做一点改装:

 public B() {
            super(5);
            int c = getValue();
            setValue(c - 3);

    }

开始调试:

这里开始调用this.setValue(),由于子类B自己覆盖了父类的方法,所以这里调用子类的方法,执行后结果为12

也就是说此时的value为B实例的变量value=12,不过要搞清楚的是调用getValue()方法返回的结果是6,返回结果是:

然后是setValue的计算:(6-3)*2=6,此时类B的实例的value值由原先的12变成6。至此,类B实例化完成。

接下来就是调用getValue()的结果了:
value=6+1=7,return 7,打印 2*7=14。最终打印7

所以最终打印结果为: 12 14 7

总结:

当子类覆盖父类的方法后,父类里调用同名方法将调用子类的方法,这是继承的特性。

try...finally块中return 会先行发生(这一点有点迷,明明idea调试的顺序是先执行finally里的语句导致value=12,然后才跳到return,然后执行该方法返回的值还是原先的6,感觉能从函数调用栈帧角度说得通,但这里不熟,未来再回来解疑。)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67742.html

相关文章

  • Java】广州三本秋招经历

    摘要:具体的时间线从月中旬,我开始关注牛客网的秋招内推信息。直至十月中下旬结束秋招。之前也写过自己在广州找实习的经历,那次把面试的过程都具体贴出来了。我今年就完美错过了春招实习经历。 前言 只有光头才能变强 离上次发文章已经快两个月时间了,最近一直忙着秋招的事。今天是2018年10月22日,对于互联网行业来说,秋招就基本结束了。我这边的流程也走完了(不再笔试/面试了),所以来写写我的秋招经历...

    qqlcbb 评论0 收藏1
  • 一次XX前端面试

    摘要:面试官说那我问你一个哲学的问题,为什么有数据结构这种东西哇,这是啥,巴拉巴拉扯了一通,大致就是物以类聚,人以群分,先人积累下来的经验,这些让我们更方便处理数据啥的。 前因,没有比摸鱼有趣的事了 距离自己被外派(俗称外包)出去,已经过了快五个月,工作的话,很闲。人啊,一定保持好的习惯,懒惰是会上瘾,日常摸鱼,怀疑人生,我是谁,我在哪,我要干什么。 中午吃饭的时候,收到了boss直聘的一条...

    Shisui 评论0 收藏0
  • 一次狂怼多线程的面经

    摘要:最近面试一家有直播业务的公司,明显感觉到对多线程的理解有一些要求。第一轮面试大概就面了分钟左右,一轮下来口干舌燥。下面对面试题做了下简单分类,分享给大家。 最近面试一家有直播业务的公司,明显感觉到对多线程的理解有一些要求。第一轮面试大概就面了 70 分钟左右,一轮下来口干舌燥。 下面对面试题做了下简单分类,分享给大家。 多线程 有什么方法可以监控线程的状态 synchronized ...

    Scott 评论0 收藏0
  • 前端实习面试的一些建议

    摘要:作者今年大三,在春招过程中参加了多家大公司的面试后,拿到了腾讯的前端实习,在这里做一些总结,希望给还未参加过实习面试的同学一些帮助。在之后的面试时就更加从容一些了。 作者今年大三,在春招过程中参加了多家大公司的面试后,拿到了腾讯的前端实习 offer,在这里做一些总结,希望给还未参加过实习面试的同学一些帮助。 一、简历的准备 简历制作是很重要的一个环节,一份好的简历会给面试官留下很不错...

    Rango 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<