Сокурсники! Подскажите пожалуйста, наткнулась тут на интересный комментарий от автора статьи.
Вопрос: В чем особенность инициализации локальных переменных? Ответ: Локальные переменные не инициализируются автоматически пустым значением null. Локальную переменную необходимо явно инициализировать с помощью оператора new или присвоив ей пустое значение null.
Но вот тут есть такой момент:
На самом деле процесс инициализации проходит следующим образом:
  • Память, выделенная под новый объект, заполняется двоичными нулями.
  • Конструкторы базовых классов вызываются в описанном ранее порядке. В этот момент вызывается переопределенный метод draw() (да, перед вызовом конструктора класса RoundGlyph), где обнаруживается, что переменная radius равна нулю из-за первого этапа.
  • Вызываются инициализаторы членов класса в порядке их определения.
  • Исполняется тело конструктора производного класса.
У происходящего есть и положительная сторона — по крайней мере, данные инициализируются нулями (или тем, что понимается под нулевым значением для определенного типа данных), а не случайным «мусором» в памяти. Это относится и к ссылкам на объекты, внедренные в класс с помощью композиции. Они принимают особое значение null.
Проверила. Если не присваивать значение, то инициализируются действительно null-ом или значением по умолчанию для примитивных типов. Что имел ввиду автор? Или это ошибка?