gpt4 book ai didi

java - 调用哪些重写方法?

转载 作者:行者123 更新时间:2023-12-02 09:58:18 24 4
gpt4 key购买 nike

我很难理解给定问题的解决方案。我无法理解每一步都调用了类的哪些方法。

我尝试列出 a、b、c 声明类型和实际类型,然后尝试选择重写或重载方法,但它很复杂。

class Upper {

private int i;

private String name;

public Upper(int i) {
name = "Upper";

this.i = i;
}

public void set(Upper n) {
i = n.show();
}

public int show() {
return i;
}

}

class Middle extends Upper {
private int j;

private String name;

public Middle(int i) {

super(i + 1);

name = "Middle";
this.j = i;
}

public void set(Upper n) {
j = n.show();
}

public int show() {
return j;
}

}

class Lower extends Middle {


private int i;

private String name;

public Lower(int i) {

super(i + 1);
name = "Lower";
this.i = i;
}

public void set(Lower n) {
i = n.show();
}

public int show() {
return i;
}

}

class Tester {

public static void main(String[] args) {
Lower a = new Lower(1);

Middle b = a;

Upper c = new Middle(5);



a.set(c);

b.set(a);

c.set(b);

System.out.println(a.show());
System.out.println(b.show());
System.out.println(c.show());

}

}

System.out.println(a.show()); 打印的结果是什么在设置命令之后?答案是1

System.out.println(b.show()); 打印的结果是什么在设置命令之后?答案是1

System.out.println(c.show()); 打印的结果是什么在设置命令之后?答案是1

我不明白为什么所有这些的答案都是1。而且我也无法判断哪个类'重写或重载了“a.set(c); b.set(a); c.set( b);”用途。详细的解释会非常有帮助。

最佳答案

a.set(c) 使用 Middle 的设置方法,因为它会覆盖 Upper 的设置方法,并且 Lower 的(重载)设置不适用,因为 c 不是 Lower 的实例。

因此,j 设置为 c.show(),它返回 c 的属性 j,因此它将设置为 5。因此,a 的(下)属性 i 永远不会被触及,并且在显示和打印时保持为 1 .

尝试自己解决其他问题。

关于java - 调用哪些重写方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55824705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com