Главная » Java » Создание объектов Java

0

Объекты, представляющие небесные тела и соответствующие классу Body в его начальной редакции, могут создаваться и инициализироваться следующим образом:

Body sun = new Body();

 sun.idNum = Body.nextID++;

 sun.name = "солнце";

       sun.orbits = null;                         // Солнце – центр солнечной системы

Body earth = new Body();

earth.idNum = Body.nextID++;

earth.name = "земля";

earth.orbits = sun;

сначала мы объявляем переменную sun, предназначенную для хранения ссылки на объект типа Body. Как говорилось выше, подобное объявление не предполагает немедленного создания объекта – оно всего лишь определяет переменную конкретного. Соответствующий объект должен (или может) быть создан явно .

Объект, на который ссылается переменная sun, создается посредством оператора new. Конструкция, предполагающая использование new, – это наиболее употребительный способ создания объектов (об альтернативах мы расскажем в главе 11). Намереваясь построить объект с помощью оператора new, мы задаем имя соответствующего класса и перечисляем требуемые аргументы, если таковые предусмотрены. Исполняющая система выделяет фрагмент памяти, необходимый для размещения содержимого полей объекта, и инициализирует их значениями, принятыми по умолчанию (о том, как это делается, мы расскажем ниже). По завершении процесса инициализации система возвращает ссылку на созданный объект.

Если система не находит достаточного фрагмента свободной памяти, она обычно активизирует процесс сборки мусора, чтобы попробовать освободить занятые участки памяти. Если и далее нехватка памяти все еще ощущается, оператор new генерирует исключение типа OutOfMemoryError.

 Создав новый объект типа Body, мы инициализируем его поля. Каждый объект Body нуждается в собственном уникальном номере, в качестве которого используется текущее содержимое статического поля nextID. Код обязан позаботиться об увеличении значения nextID на единицу, чтобы очередной создаваемый объект Body вновь получил уникальный номер.

Далее тем же образом создается объект earth. В этом примере мы моделируем солнечную систему. Переменной orbits объекта sun присвоено значение null, поскольку Солнце служит центром системы. После создания объекта earth его полю огbits присваивается значение sun, указывающее на то, что Земля вращается вокруг Солнца. Если бы нам довел ось создать объект, соответствующий Луне, его переменной огbits следовало бы присвоить значение earth. В модели галактики полю огbits объекта sun отвечал бы объект "черной дыры", расположенной где-то в средней части Млечного пути.

Объекты, создаваемые с помощью оператора new, нигде в программе явно не Удаляются. Виртуальная машина Java всю ответственность за очистку памяти возлагает на себя, используя механизм сборки мусора, подразумевающий, что объекты, ссылки на которые отсутствуют, автоматически уничтожаются без Вмешательства прикладной программы. Если объект больше не нужен, вы ДОЛЖНЫ просто перестать на него ссылаться. Рассмотрим, например, объекты Локальных переменных, создаваемых в теле метода. Для их уничтожения достаточно завершить метод, вернув управление в точку вызова, – теперь код метода не выполняется и ни одну из Локальных переменных использовать уже нельзя. Если говорить об объектах, обладающих более продолжительным циклом существования, их удаление можно инициировать, присвоив соответствующим ссылочным переменным значение null.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии