iPhone - главная тема Grand Central Dispatch

Если они были объявлены как поля класса, тогда они были бы действительно инициализированы 0.

Вы немного сбиты с толку, потому что если вы пишете:

class Clazz {
  int a;
  int b;

  Clazz () {
     super ();
     b = 0;
  }

  public void printA () {
     sout (a + b);
  }

  public static void main (String[] args) {
     new Clazz ().printA ();
  }
}

Тогда этот код напечатает «0». Это связано с тем, что при создании нового экземпляра Clazz будет вызываться специальный конструктор. Сначала будет вызываться super (), тогда поле a будет инициализировано неявно, а затем будет выполнена строка b = 0.

145
задан Honey 4 July 2017 в 22:07
поделиться