我需要有关特定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
?非常感谢。
答案 0 :(得分:0)
为什么输出为9
逐步解决这个问题,主要方法是在D类中运行。
A a = new D();
创建一个名为D
的{{1}}对象,它扩展了A类。这意味着它继承了所有A的属性。包括a
和int i = 2;
int j = 5;
这会调用a.set(5);
类
set()
方法
D
在this.j = this.i + super.j;
类中的set()
方法中执行的语句首先引用D
。 this.i
类继承了D
类的i
和j
值;因此,A
= 2.接下来,它引用this.i
,它直接引用它所扩展的类中的值。在这种情况下,父类super.j
中的值j
等于5.然后它添加2 + 5 = 7并将总和设置为存储在父类中的值A
。
j
这将打印出对象的System.out.println(a.i+a.j);
和i
值的总和,这些值存储在它扩展的父类中。所以它打印2 + 7 =“9”。