Java 练习:关于输出



我需要有关特定 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 中运行。

  1. A a = new D();
    创建一个名为aD对象,它扩展了类 A。这意味着它继承了 A 的所有属性。包括int i = 2;int j = 5;


  2. a.set(5);这调用D类中的set()方法

  3. this.j = this.i + super.j;D类中的set()方法中执行的语句首先引用this.iD类从它扩展的A类继承ij值;因此,this.i= 2。接下来,它指的是直接引用它扩展的类中的值的super.j。在这种情况下,父类A中的值j等于 5。然后,它将 2 + 5 = 7 相加,并将总和设置为存储在父类中的值j

  4. System.out.println(a.i+a.j);这将打印出存储在它扩展的父类中的 Object 的i值和j值的总和。所以它打印 2 + 7 = "9"。

最新更新