作为一个脑力锻炼的例子,我的一位教授给了我们以下练习,以便学习继承。我们需要找出输出结果。
输出结果和我期望的一样:
注意:我不确定这的实际应用是什么,我只是想学习一些新东西 :P
//java
public class A {
public void f() {
System.out.println("A -> f()");
x = x + 4;
if (x < 15) this.f(); //the f-call
}
public int x = 5;
}
public class B extends A {
@Override
public void f() {
System.out.println("B -> f()");
x = x + 3;
super.f();
}
}
public class Main {
public static void
main(String[] args) {
A a = new B();
System.out.println("a.f()");
a.f();
System.out.println(a.x);
}
}
输出结果和我期望的一样:
- a.f()
- B -> f()
- A -> f()
- B -> f()
- A -> f()
- 19
- a.f()
- B -> f()
- A -> f()
- A -> f()
- 16
注意:我不确定这的实际应用是什么,我只是想学习一些新东西 :P