【发布时间】:2018-09-26 16:53:24
【问题描述】:
我试图找出以下代码的输出,除了 2 行之外,我几乎都正确。第 3 行和第 7 行。
预期的输出是:
1 : 10
2 : 20
3 : 20
4 : 15
5 : 40
6 : 75
7 : 35
8 : 75
9 : 20
正如我所提到的,除了 3 和 7 之外,我都做对了。对我来说,第 3 行是 25,第 7 行是 40。你们能解释一下为什么是 3:20 和 7:35 行吗?之前查了一下,没找到很好的解释。
这不是家庭作业!
public class Alpha {
protected int x;
public Alpha() { this(10); }
public Alpha(int x) { this.x = x; }
public void f() { x = 20; }
public void f(int x) { x = 25; }
public void g(Object a) { x = 30; }
public void h(Object a) { x = 50; }
public void h(Integer a) { x = 55; }
}
public class Beta extends Alpha {
public Beta() { super(15); }
public void g(Object a) { x = 35; }
public void g(Integer a) { x = 40; }
public void h(Object b) { x = 70; }
public void h(Integer b) { x = 75; }
public static void main(String[] args) {
Alpha a = new Alpha();
System.out.println("1 : " + a.x);
a.f();
System.out.println("2 : " + a.x);
a.f(100);
System.out.println("3 : " + a.x);
Beta b = new Beta();
System.out.println("4 : " + b.x);
b.g(200);
System.out.println("5 : " + b.x);
b.h(300);
System.out.println("6 : " + b.x);
Alpha c = b;
c.g(400);
System.out.println("7 : " + c.x);
c.h(500);
System.out.println("8 : " + c.x);
c.f();
System.out.println("9 : " + b.x);
}
}
【问题讨论】:
-
你试过在调试器下一步步运行这段代码吗?
标签: java object methods parameters