- •Тема 1. Вступ до дисципліни
- •Тема 2. Управління ходом дій операторів програми
- •Тема 3. Ініціалізація та завершення дії змінних
- •Тема 4. Реалізація і специфікатори доступу
- •Тема 5. Успадкування в Java та його особливості
- •2. Розробка програмних систем складної структури
- •Тема 10. Створення вікон і аплетів
- •Тема 11. Розподільне програмування
- •1. Вступ до мовного середовища. Ознайомлення з мовним середовищем. Початкові відомості про мовне середовище java
- •1.1. Виконання Java-програми
- •Питання і завдання
- •1.4. Інтегроване середовище jBuilder
- •2. Постулати об'єктно-орієнтованого програмування
- •2.1. Модель і абстракція
- •2.2. Ієрархія та успадкування
- •2.4. Класи, їх структура та зміст
- •3. Управління ходом дії операторів програми
- •Питання і завдання
- •4.1. Ініціалізація за допомогою конструктора
- •4.2. Конструктор без параметрів
- •4.3. Перевантаження методів
- •4.4. Ініціалізація членів класу
- •5. Реалізація
- •6. Успадкування в java та його особливості
- •Завдання для самостійного опрацювання теми
- •7. Динамічне зв'язування (поліморфізм)
- •Завдання для самостійного опрацювання теми
- •8. Інтерфейси та внутрішні класи
- •Завдання для самостійного опрацювання теми
- •9. Обробка помилок і виключних ситуацій
- •Завдання для самостійного опрацювання теми
- •10. Система вводу/виводу в java
- •Завдання для самостійного опрацювання теми
- •Програма DirList.Java
- •11. Створення вікон і аплетів
- •Завдання для самостійного опрацювання теми
- •12. Створення додатків windows
- •12.1. Сім'я операційних систем Windows
- •12.2. Структура додатка Windows
4.1. Ініціалізація за допомогою конструктора
Конструктори — це методи, які несуть відповідальність за створення об'єктів та ініціалізацію їхніх змінних. Вони завжди мають таке саме ім'я, як і клас об'єкта, що його вони створюють, і не повертають значення будь-якого типу.
Приклад:
public class To String Without {
int x,y;
/** простий конструктор*/
public class To String Without (int anX, int aY){
x = anX; у = aY;
}
/**головна програма тільки створює і виводить об'єкт*/ public static void main (String[] args) { System.out.println (new ToStringWithout (42,86)); }
}
Результат виводу має не дуже інформативний вигляд:
ToStringWithout@ 990с747в
Для кращого виводу слід реалізувати метод ToString ():
/* метод ToString () з перевизначенням*/
public class To String Without {
Intx.y;
/** Простий конструктор*/ public class ToStringWithout (int anX, int aY){ x - anX; у = aY; }
/**Перевизначаємо То String*/ public StringToString () { return «ToStringWith ["+x+ ", "+y+ "] ";
public static void main (String[] args) { System.out.println (new ToStringWithout (42,86)); }
}
У результаті дій маємо: ToStringWithout (42,86)
4.2. Конструктор без параметрів
Конструктор, як і будь-який метод, може мати параметри, для того, щоб дати змогу вам вказати, як створювати об'єкт.
До того ж параметри конструктора дають змогу передавати аргументи для ініціалізації об'єкта. Оскільки ім'я конструктора визначено іменем класу, то для нього може існувати тільки одне ім'я. Але що потрібно робити, коли доведеться створювати об'єкти кількома способами? Наприклад, ви створюєте клас, який ініціалізується стандартно і використовує інформацію з визначе ного файла. У цьому разі необхідні два конструктори, один з яких не має параметрів (конструктор за замовчуванням), а дру-гий бере як параметр рядок, в якому вказується ім'я файла. Із файла слід ініціалізувати об'єкт.
Оскільки вони є повноцінними конструкторами, то повинні мати одне ім'я — ім'я класу. Отже, щоб використовувати методи з однаковими іменами, але з різними параметрами, необхідне перевантаження методів.
Конструктор за замовчуванням — це конструктор без параметрів. Коли створюється клас без конструкторів, компілятор автоматично додає конструктор за замовчуванням:
class Jah{
int j;
}
public class DConstructor {
public static void main (String [] args)
{
Joh me = new Jah (); //за замовчуванням.
}
Розглянемо приклад неявного звернення до конструктора су-перкласу:
class MusicalEnsemble{
int members;
int category; — категорія музики
— класична;
— кантрі;
— джаз. MusicalEnsemble() { members =65;
category = 1;
}
MusicalEnsemble(Int members, Int category) {
this, members = members; this, category = category;
}
}
class Orkestr extends Musical Ensemble {
String controler;
Int bassoon Length;
Orkestr (Int members, String controler, Int bassoon Length) {
this. members = members;
this. controler = controler;
this. bassoonLength;
}
}
Кожний конструктор починається з неявного виклику конструктора суперкласу з порожнім списком параметрів. Якщо для класу маємо невизначений конструктор з порожнім списком параметрів, то Java визначає неявний конструктор, який встановлює всі змінні в нулі, порожні рядки (null). Будь-який конструктор свого суперкласу:
//конструктор має те саме ім'я, що й клас Orkestr (Int members, String controler, Int bassoonLength) { //виклик конструктора суперкласу, передавання параметрів для призначення//змінним members і category super (members,!); this. controler = controler; this. bassoon Length = bassoon Length; }
Тут використовуються два особливих слова: This і super. This розглядається як ім'я примірника всередині примірника. Слово this необхідне для уникнення плутанини, коли клас і його «батько» мають методи з однаковими іменами.
Ключове слово super посилається безпосередньо на батьківський клас. Виклик super має з'явитися в першому рядку конструктора похідного класу.