Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unix.docx
Скачиваний:
23
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

8.4. Создание экземпляра класса

Описание класса - это просто описание свойств и методов объекта. При создании же экземпляра объекта (ключевое слово new), объект создается реально: анализируется описание класса, выделяется необходимая память под объект, объект получает собственные копии всех не static свойств и методов класса и, в зависи­мости от переданных создаваемому классу параметров, срабатывает тот или иной конструктор класса, который выполняет заданные программистом операции по инициализации свойств объекта. Можно созда­вать несколько экземпляров одного класса. При создании экземпляра класса, в используемые переменные помещается указатель на созданный объект (см. переменные domino и shashki в примере ниже). На один и тот же объект может существовать несколько указателей (см. переменную domino2 в примере ниже). Объект существует до тех пор, пока на него есть хотя бы одна ссылка, иначе он автоматически уничтожа­ется Java ("сборка мусора").

Синтаксис создания экземпляра класса следующий:

Вариант 1 (предварительное описание, с последующим созданием):

имя_описанного_класса имя_переменной;

имя_переменной = new имя_описанного_класса (параметры_для_конструктора);

Вариант 2 (создание в момент описания):

имя_описанного_класса имя_переменной = new имя_описанного_класса (параметры_для_конструктора); Пример (предполагается, что класс Game описан раньше (см. выше) ): public Class dvor {

Game domino, domino2; // Описание переменных на уровне класса

public dvor ( ) { //Конструктор класса dvor

domino = new Game ("Домино", 6); /* Создается игра "домино" на 6 человек, срабатывает

соответствующий конструктор класса */ Game shashki = new Game ("Шашки"); /* Создается игра "шашки", число участников и так известно.

Т. к. список параметров другой, срабатывает конструктор, у которого перечень параметров именно такой */ domino2 = domino; /* За спинами доминошников появляются "болельщики", которые также лезут в

игру - переменная domino2 указывает на тот же объект, что и domino.*/ shashki = domino; /* В шашки играть бросают, и присоединяются к "болельщикам" доминошников: на объект "домино" уже 3 указателя: domino, domino2 и shashki, а объект "шашки" будет уничтожен при ближайшей "сборке мусора", т.к. на него нет ни одного указателя */

}

public static void main(String args[ ] ) { // Выполнение программы всегда начинается с метода main

dvor go = new dvor ( ); // Вызов конструктора dvor, который и выполнит основную часть программы System.gc ( ); // Принудительная "сборка мусора" ( gc = Garbage Collection ) }}

Приведенная выше программа начнет выполняться с метода main (как и любая исполняемая программа на Java), который вызовет создание экземпляра класса dvor. При создании экземпляра класса, будет вызван конструктор dvor ( ), который и выполнит основную часть программы. Такой прием применен из-за того, что метод main - статический, а из статического метода нельзя вызывать не статические методы и свойства других объектов (например, создавать объекты domino и shashki).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]