博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一道笔试题引发的血案之查看程序运行结果
阅读量:6149 次
发布时间:2019-06-21

本文共 1394 字,大约阅读时间需要 4 分钟。

判断程序输出的结果

 

public class Test {        public static void main(String[] args) {        System.out.println(new B().getValue());    }    static class A {        protected int value;        public A(int v) {            setValue(v);        }        public void setValue(int value) {            this.value = value;        }        public int getValue() {            try {                value++;                return value;            }catch (Exception e) {                System.out.println(e.toString());            }finally {                this.setValue(value);                System.out.println(value);            }            return value;        }    }    static class B extends A {        public B() {            super(5);            setValue(getValue() - 3);        }        public void setValue(int value) {            super.setValue(2 * value);        }    }    }

 

答案

分析过程

实例化B首先实例化A

在实例化B的时候,调用B的构造器,并将5作为参数传递给A的构造器,执行setValue方法,此时B类内已经对继承来的setValue进行了覆写,在内部又调用了A的setValue并将 2* 5=10 作为参数传递进去

此时B的成员value值是10,然后执行A的构造器内的setValue(getValue() -3)这一行代码,首先执行他继承来的getValue方法

在getValue中,value的值加1变为11,此时11要作为此方法的返回值被返回,接下来执行finally块内的代码,再次调用B的setValue方法将value的值设置为22,并将value打印出来(22

接下来setValue(getValue() - 3)内的变量就得到返回了,那就是11,于是将其减去3得到8,并作为参数传递,接下来又是调用setValue将8乘以2得到16进行传递,然后按照上面的顺序 加1 得到17 并等待返回

然后finally块内,17乘以2得到34输出(34

最后17被返回,打印(17


 

转载于:https://www.cnblogs.com/xinglichao/p/10482063.html

你可能感兴趣的文章
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>