Почему подобная инициализация обьекта по утверждению автора книги считается корректной? В книге "Философия Java" Брюса Эккеля утверждается следующее:
Из результата программы видно (код ниже) что ссылка w3 минует двойную инициализацию, перед вызовом конструктора и во время него. (Первый объект теряется, и со временеи его уничтожит сборщик мусора.) Поначалу это может показаться неэффективным, но такой подход гарантирует верную инициализацию - что произошло бы, если бы в классе был определен перегруженный конструктор, который не инициализировал бы ссылку w3, а она при этом не получала бы значения по умолчанию?//: initialization/OrderOfInitialization.java
// Demonstrates initialization order.
import static net.mindview.util.Print.*;
// When the constructor is called to create a
// Window object, you'll see a message:
class Window {
Window(int marker) { print("Window(" + marker + ")"); }
}
class House {
Window w1 = new Window(1); // Before constructor
Window w2 = new Window(2); // After constructor
Window w3 = new Window(3); // At end
House() {
// Show that we're in the constructor:
print("House()");
w3 = new Window(33); // Reinitialize w3
}
void f() { print("f()"); }
}
public class OrderOfInitialization {
public static void main(String[] args) {
House h = new House();
h.f(); // Shows that construction is done
}
} /* Output:
Window(1)
Window(2)
Window(3)
House()
Window(33)
f()
*///:~

21 Авг 2019 в 07:06
171 +1
0
Ответы
1

Автор книги считает подобную инициализацию объекта корректной, потому что она гарантирует правильную инициализацию объекта, избегая потенциальных проблем с неинициализированными переменными. В данном случае, даже если бы в классе был определен перегруженный конструктор, который не инициализировал бы переменную w3, она все равно получает значение по умолчанию при создании объекта.
Кроме того, подобный подход позволяет избежать ошибок и непредвиденных поведений в коде, связанных с неправильной инициализацией переменных. В итоге, такой способ инициализации обеспечивает надежность и защиту от ошибок программирования.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир