Java练习:关于输出

时间:2018-04-16 15:44:28

标签: 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?非常感谢。

1 个答案:

答案 0 :(得分:0)

为什么输出为9

逐步解决这个问题,主要方法是在D类中运行。

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

  2. int j = 5;
    这会调用a.set(5);

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

  5. j 这将打印出对象的System.out.println(a.i+a.j);i值的总和,这些值存储在它扩展的父类中。所以它打印2 + 7 =“9”。