Контрольна робота
Програмування на Java (теорія)
ЗМІСТ
1. Динамічна ініціалізація об'єктів
. Читання і запис файлів
1. Динамічна ініціалізація об'єктів
Об'єкти в Java створюються за допомогою зарезервованого слова new, після якого йде конструктор - спеціальна підпрограма, що займається створенням об'єкта і ініціалізацією полів створюваного об'єкта. Для нього не вказується тип значення, і він не є ні методом об'єкта (викликається через ім'я класу коли об'єкта ще немає), ні методом класу (в конструкторі доступний об'єкт і його поля через посилання this). Насправді конструктор в поєднанні з оператором new повертає посилання на створюваний об'єкт і може вважатися особливим видом методів, що з'єднує в собі риси методів класу і методів об'єкта. p align="justify"> Якщо в об'єкті при створенні не потрібна ніяка додаткова ініціалізація, можна використовувати конструктор, який за замовчуванням присутній для кожного класу. Це ім'я класу, після якого ставляться порожні круглі дужки - без списку параметрів. Такий конструктор при розробці класу задавати не треба, він присутній автоматично. Якщо потрібно ініціалізація, зазвичай застосовують конструктори зі списком параметрів. p align="justify"> Порядок викликів при створенні об'єкта деякого класу (будемо називати його дочірнім класом):
. Створюється об'єкт, в якому всі поля даних мають значення за замовчуванням (нулі на двійковому рівні подання).
. Викликається конструктор дочірнього класу.
. Конструктор дочірнього класу викликає конструктор батька (безпосереднього прабатька), а також по ланцюжку всі прабатьківські конструктори та ініціалізації полів, заданих в цих класах, аж до класу Object.
. Проводиться ініціалізація полів батьківського частини об'єкта значеннями, заданими у декларації батьківського класу.
. Виконується тіло конструктора батьківського класу.
. Проводиться ініціалізація полів дочірньої частини об'єкта значеннями, заданими у декларації дочірнього класу.
. Виконується тіло конструктора дочірнього класу.
Володіння даного порядку важливо у випадках, коли в конструкторі викликаються-які методи об'єкта, і треба бути впевненим, що до моменту виклику цих методів об'єкт отримає правильні значення полів даних.
Як правило, для ініціалізації полів складно влаштованих об'єктів використовують конструктори. Але крім них в Java, на відміну від більшості інших мов програмування, для цих цілей можуть також служити блоки ініціалізації класу і блоки ініціалізації об'єкта. Синтаксис завдання класів з блоками ініціалізації наступний:
Модифікатори class ІмяКласса extends ІмяРодітеля {
Завдання полів; {
тіло блоку ініціалізації класу
}
{
тіло блоку ініціалізації об'єкту
}
Завдання підпрограм - методів класу, методів об'єкта, конструкторів
}
Блоків ініціалізації класу і блоків ініціалізації об'єкта може бути декілька.
Порядок виконання операторів при наявності блоків ініціалізації головного класу додатки (містить метод main):
. ініціалізація полів даних і виконання блоків ініціалізації класу (у порядку запису в декларації класу);
. метод main;
. виконання блоків ініціалізації об'єкта;
. виконання тіла конструктора класу.
Для інших класів порядок аналогічний, але без виклику методу main:
. ініціалізація полів даних і виконання блоків ініціалізації класу (у порядку запису в декларації класу);
. виконання блоків ініціалізації об'єкта;
. виконання тіла конструктора класу.
Чим краще користуватися, блоками ініціалізації або конструкторами? Відповідь, звича...