我需要有关特定 Java 代码的帮助:
class A {
int i = 2;
int j = 5;
void set (int j) {
this.i = this.j;
}
}
class D extends A {
@Override
void set (int i) {
this.j = this.i + super.j;
}
public static void main (String[] args) {
A a = new D();
a.set(5);
System.out.println(a.i+a.j);
}
}
有人可以向我解释为什么输出9
吗? 非常感谢。
为什么输出是 9
逐步解决此问题,main 方法从类 D 中运行。
-
A a = new D();
创建一个名为a
的D
对象,它扩展了类 A。这意味着它继承了 A 的所有属性。包括int i = 2;
和int j = 5;
-
a.set(5);
这调用D
类中的set()
方法 -
this.j = this.i + super.j;
在D
类中的set()
方法中执行的语句首先引用this.i
。D
类从它扩展的A
类继承i
和j
值;因此,this.i
= 2。接下来,它指的是直接引用它扩展的类中的值的super.j
。在这种情况下,父类A
中的值j
等于 5。然后,它将 2 + 5 = 7 相加,并将总和设置为存储在父类中的值j
。 -
System.out.println(a.i+a.j);
这将打印出存储在它扩展的父类中的 Object 的i
值和j
值的总和。所以它打印 2 + 7 = "9"。