
- •1. Історія створення Java.
- •2. Історія розвитку Java
- •3.Опишіть поняття “об’єкт”
- •4. Опишіть поняття “клас”
- •5. Опишіть типи відношень між класами
- •6. Переваги і недоліки об’єкто-зорієнтованого програмування
- •7. Опишіть правила побудови ідентифікаторів мови Java, наведіть приклади
- •8. Поняття літералів. Приклади
- •9. Оператори та операції в мові Java
- •11. Типи даних у мові Java
- •12. Клас Object
- •13. Клас String
- •14. Клас Class
- •15. Імена в Java
- •16. Пакети в Java
- •17. Область видимості імен
- •18.Об’ява класів у Java
- •19.Приведення типів у Java
- •21.Приведення посилальних типів даних.
- •22.Приведення до рядка.
- •23.Заборонені приведення.
- •24.Застосування приведення типів.
- •25.Статичні елементи.
- •26. Ключові слова this і super.
- •27. Ключове слово abstract.
- •28. Поняття інтерфейсів.
- •29. Поліморфізм.
- •30. Масиви в Java.
- •31. Приведення типів для масивів.
- •32. Клонування масивів.
- •33. Керування ходом виконання програми.
- •34. Нормальне і перерване виконання операторів.
- •35. Блоки і локальні змінні.
- •36. Порожній оператор.
- •38. Синтаксис оператора if.
- •39. Синтаксис оператора switch.
- •40. Керування циклами.
- •41.Синтаксис оператора while
- •42.Ситаксис оператора do
- •43.Синтаксис оператора for
- •44.Оператори break I continue
- •45.Іменовані блоки
- •46. Оператор return
- •47. Оператор synchronized
- •48. Помилки при роботі програми. Виняткові ситуації
- •48. Помилки при роботі програми. Виняткові ситуації
- •49.Причини виникнення помилок
- •50.Обробки виняткових ситуацій
- •51.Конструкція try-catch-finally
- •52.Використання оператора throw
- •53.Виняткові ситуації, які перевіряються і які не перевіряються
- •54.Створення класів користувача обробки виняткових ситуацій
- •55.Поняття потокв в Java
- •56.Базові класи для роботи з потоками
- •57.Класс Thread
- •58. Інтерфейс Runnable
- •60. Потоки-демони
- •61.Синхронізація роботи потоків.
- •62.Класи обгортки для примітивних типів.
- •63.Клас Math.
- •66.Клас Calendar.
- •67.Клас TimeZone.
- •68. Колекції java
- •69.Інтерфейс Collection.
- •70.Інтерфейс Set.
- •71.Інтерфейс List.
- •72.Інтерфейс Map.
- •73.Інтерфейс SortedSet.
- •74.Інтерфейс SortedMap.
- •75.Інтерфейс Iterator.
- •76.Конкретні класи колекцій.
- •77.Клас Properties.
- •78. Інтерфейс Comparator.
- •79.Клас BitSet.
- •80.Клас Random.
- •81.Система введення/виведення. Потоки даних.
- •82.Класи реалізації потоків даних.
- •84. Робота із файловою системою.
- •59. Робота із пріоритетами потоків
26. Ключові слова this і super.
Якщо виконання коду відбувається в динамічному контексті, то має бути об'єкт,
асоційований з ним. У цьому випадку ключове слово this повертає посилання на цей
об'єкт:
class Test {
public Object getThis() {
return this; // Проверим, куда указывает эта ссылка
}
public static void main(String s[]) {
Test t = new Test();
System.out.println(t.getThis()==t); // Сравнение
}
}
Результатом роботи програми буде: true
Тобто, всередині методів слово this повертає посилання на об'єкт, у якого цей метод
викликаний. Воно необхідне, якщо потрібно передати аргумент, рівний посиланням на цей об'єкт, в який-небудь метод.
Інше застосування this розглядалося у випадку "затемняющих" оголошень:
class Human {
private String name;
public void setName(String name) {
this.name=name;
}
}
Слово this можна використовувати для звернення до полів , які оголошуються нижче. Нарешті , слово this застосовується в конструкторах для явного виклику в першому рядку іншого конструктора цього ж класу. Там же може застосовуватися і слово super , тільки вже для звернення до конструктора батьківського класу . Інші застосування слова super також пов'язані із зверненням до батьківського класу об'єкта. Наприклад , воно може знадобитися в разі перевизначення ( overriding ) батьківського методу . Перевизначенням називають оголошення методу , сигнатура якого збігається з одним із методів батьківського класу . Часто бувають випадки , коли при перевизначенні було б корисно скористатися результатом роботи батьківського методу . Припустимо , він робив складні обчислення , а перевизначення метод повинен повернути округлений результат цих обчислень . Зрозуміло , що набагато зручніше якось звернутися до батьківського методу , ніж заново описувати весь алгоритм . Тут застосовується слово super .
27. Ключове слово abstract.
Іноді буває зручним описати тільки заголовок методу , без його тіла , і таким чином оголосити , що такий метод буде існувати в цьому класі. Реалізацію цього методу , тобто його тіло , можна описати пізніше.
Розглянемо приклад. Припустимо , необхідно створити набір графічних елементів , неважливо , яких саме. Наприклад , вони можуть являти собою геометричні фігури - коло , квадрат , зірка і т.д.; або елементи призначеного для користувача інтерфейсу - кнопки , поля введення і т.д. Зараз це не має вирішального значення. Крім того , існує спеціальний контейнер , який займається їх отрисовкой . Зрозуміло , що зовнішній вигляд кожної компоненти унікальний, а значить , відповідний метод ( назвемо його paint ( )) буде реалізований в різних елементах по- різному.
Але в той же час у компонент може бути багато спільного. Наприклад , будь-яка з них займає деяку прямокутну область контейнера. Складні контури фігури необхідно вписати в прямокутник , щоб можна було аналізувати перекриття , перевіряти , чи не вилазить компонент за кордону контейнера , і т.д. Кожна фігура може мати колір , яким її треба малювати , може бути видимою , або невидимою і т.д. Очевидно , що корисно створити батьківський клас для всіх компонент і один раз оголосити в ньому всі загальні властивості , щоб кожна компонента лише успадковувала їх.
Але як вчинити з методом отрисовки? Адже батьківський клас не представляє собою будь-яку фігуру, у нього немає візуального представлення. Можна оголосити метод paint ( ) у кожній компоненті незалежно. Але тоді контейнер повинен буде володіти складною функціональністю , щоб аналізувати , яка саме компонента зараз обробляється , виконувати приведення типу і тільки після цього викликати потрібний метод .
Саме тут зручно оголосити абстрактний метод у батьківському класі. У нього немає зовнішнього вигляду , але відомо , що він є у кожного спадкоємця. Тому заголовок методу описується в батьківському класі , тіло методу у кожного спадкоємця своє , а контейнер може спокійно користуватися тільки базовим типом , не роблячи ніяких привидів .