Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Об'єктно орієнтовне програмування1.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
1.38 Mб
Скачать

4.3. Перевантаження методів

Перевантаження методів дає змогу викликати групи схожих методів з ідентичними іменами, але з різними параметрами.

Нехай існує клас виводу, який друкує значення деякої змінної, яку буде йому передано. Змінна може бути string, int або boolean. Зміст перевантаження полягає в тому, що викликаючий метод і не повинен знати про різні методи для друкування кожного ти­пу, а має просто звернутися до методу за одним і тим самим іме­нем, забезпечити інший список параметрів. Java сам визначить, який метод викликати.

Приклад перевантажених методів.

class Output {

void print (string s) {

}

void print (int i) {

}

void print (boolean b) {

}

}

Перевантаження методів в дії

Int x = 6;

String s = «HiFi»;

Boolean b = false;

print (x); print (s); print (b);

4.4. Ініціалізація членів класу

Примітивні типи даних, які є членами, гарантовано мають отри­мати початкові значення.

Результат виконання програми дає змогу аналізувати отримані значення змінних.

//початкові значення за замовчуванням

class Measurement

boolean t;

char c;

byte b;

short s;

int i;

longj;

float f;

double d;

void print () {

System.out.println (

«тип даних Початкові значення\п»+

«boolean «+t+»\n»+

«char [<<+c+>>] «+(int)c+»\n»+

«byte «+b +»\n»+

«short «+s +»\n»+

«int «+i+»\n»+

«long «+l+»\n»+

«float «+f+»\n»+

«double «+d);

}

public class InitValue {

public static void main (string[]args)

{ Measurement d = new Measurement(); d.printQ;

new Measurement().print();

}

Примітивні об'єкти можуть явно ініціалізуватися не лише за замовчуванням, а й шляхом присвоєння початкових значень: class Measurement { boolean t=true; char c='y'; byte b=77; short s=0xff; inti=999; long 1 =4; float f= 3.14f; double d=2.71el4;

Так само можна виконувати ініціалізацію непримітивних об'єктів.

Завдання для самостійного опрацювання теми

  1. Створити клас із конструктором без параметрів, який виво­дить на екран повідомлення. Створити об'єкт цього класу.

  2. Додати до класу в завданні 1 перевантажений конструктор,в якого параметром є рядок String.

  3. Необхідно створити масив посилань на об'єкти класу, який створено в завданні 2, але не створювати об'єкти для приєднання до масиву. При виконанні програми необхідно контролювати, чи не з'явилося на екрані повідомлення конструктора.

  4. Закінчити завдання 3, приєднавши до посилань із масиву реальні об'єкти.

  5. Необхідно створити масив із рядка String і присвоїти рядок кожному елементу масиву. Масив вивести на друк за допомогою циклу for.

  6. Створити клас Prep (викладач) з перевантажувальним ме­ тодом bark (виступ). Метод має бути перевантажений в залежно від різноманітних примітивних типів даних і виводити повідом­лення залежно від версії (лекція, семінар, консультація) переван­тажувального методу. Написати метод main(), який викликає всі методи.

  1. Створити клас без конструктора, а потім у методі mainQ створити об'єкт цього класу, щоб з'ясувати автоматичне синтезу­ вання конструктора за замовленням.

  2. Створити клас із двома методами. У першому двічі зробити виклик іншого методу: один раз без використання ключового слова this, а другий — з його використанням.

  3. Створити клас із двома (перевантаженими) конструктора­ми. Використовуючи ключове слово this, викликати другий конс­труктор з першого.

  1. Створити клас із методом finalize(), який виводить повідом­лення. У методі main() створити об'єкт вашого класу. Пояснити поводження програми.

  2. Створити клас із іменем Тат (ємність), який можна напов­нити і спорожнити і в якого є умова знищення — він має бути порожнім перед знищенням. Написати метод finalize(), який пе­ ревіряє цю умову знищення. У методі main() перевірити всі мож­ливі випадки використання вашого класу.

  3. Запустити програму Garbage.Java з різними параметрами командного рядка: «gc», «finalize» або «all». Повторити програму кілька разів і знайти закономірності в її результатах. Змінити програму, щоб метод System.runFinalizationQ виконувався перед викликом методу System.gc(), та переглянути результати.