今天先看一段时间java找个状态
看到一个继承的题,就问最后这段打印出来个啥
package com.override;
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;
} finally {
this.setValue(value);
System.out.println(value);
}
}
}
static class B extends A {
public B () {
super(5);
setValue(getValue()- 3);
}
public void setValue(int value) {
super.setValue(2 * value);
}
}
}
答案:22,34,17.。。。人傻了
这里有几个点要注意:
- getValue方法里的value都是对象的属性,而不是一个临时变量,所以getValue打印的也是this.value
- this.setValue调用子类方法,super.setValue调用父类方法。
自己画个图比较清晰
写给自己:
今日任务:
小论文梳理思路:
包括:
- 看师兄中文论文看思路
- 自己抄一个大纲
- 决定需要哪些图,要有什么效果
- 对应哪些仿真事项
- 总结关键技术,
- 尽可能的攻克关键技术
明日任务:
- 注解java学习
- 具体的仿真路线制定