Статика в конструкторе - PullRequest
       5

Статика в конструкторе

0 голосов
/ 21 февраля 2012

Я читал книгу OCPJP (SCJP), когда столкнулся с этим вопросом в главе 2.

class Uber{
 static int y= 2;
 Uber(int i){
    this();
    y = y*2;
 }

 Uber(){
    y++
 }

}

class Minor extends Uber{
 Minor(){
    super(y);
    y=y+3;
 }

 public static void main(String[] args){
    new Minor();
    System.out.println(y);
 }

}

В книге сказано, что ответ должен быть 9, но я не уверен, что компилятор распознает y в super (y) ;.Если это так, как это может быть?

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Нет, код, который вы дали, не скомпилируется.Он скомпилируется, если Minor extended Uber - вы уверены, что этого нет в книге?

(Даже после компиляции код выдает для меня 7, а не 9. Я могуне вижу, как закончится печать 9 ... начинается с 2, затем удваивается до 4, затем добавляется 3, чтобы получить 7 ...)

0 голосов
/ 21 февраля 2012
class Uber{
 static int y= 2;
 Uber(int i){
    this();
    y = y*2;
 }

 Uber(){
    y++
 }
}

class Minor extends Uber{
 Minor(){
    super(y);//this called uber class and it perfoms y =Y*2 so y contains now 4.
    y=y+3;//here y value becomes 7
 }

 public static void main(String[] args){
    new Minor();//it called minor class
    System.out.println(y);//It prints 7
 }
}

Я комментирую ваш код. Где значение y изменяется, вы можете видеть это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...