Страницы

Поиск по вопросам

пятница, 14 июня 2019 г.

Инициализация переменной в конструкторе

Есть такой класс:
public class Game implements Screen {
private World world; private Renderer renderer;
public Game() { world = new World(); renderer = new Renderer(world); } }
Почему переменные инициализируются внутри конструктора, а не в месте их создания?
Например, можно просто написать:
private World world = new World();
В чем отличие таких способов инициализации?


Ответ

Плюсы использования инициализации переменной в строке с её объявлением:
Если имеется несколько конструкторов, то это позволяет избежать необходимости инициализировать переменную в каждом из конструкторов. При использовании анонимных классов нет возможности создавать их конструкторы - соответственно, инициализировать final поля класса можно только с помощью инициализации при объявлении и блока инициализации объекта.
Минусы такого использования:
Отсутствует возможность обработки исключений при инициализации. Отсутствует возможность проведения сколько-либо сложных вычислений (например, использование цикла for) при инициализации. В этом случае придётся воспользоваться конструктором или блоком инициализации объекта.

Комментариев нет:

Отправить комментарий