План уроку:
1. Статичні змінні
2. Статичні методи та властивості
3. Статичні конструктори
4. Вкладені класи
5. Анонімні класи
6. Перелічування
7. Практика
Статичні змінні
Статична змінна – це загальна змінна для всіх екземплярів класу, яка зберігається в об'єкті.
Об'єкти містять у собі статичні поля та методи.
Статичні методи та властивості
Статичними можуть бути члени та методи класу:
Статичні методи не можуть звертатися до нестатичних полів.
Статичні члени не можуть бути віртуальними, перевизначеними й абстрактними.
Статичні конструктори
Класи та статичні класи можуть мати статичні конструктори.
Статичний конструктор (блок коду) завжди відпрацьовує першим.
Властивості статичного конструктора
• Статичний конструктор (блок коду) не має модифікаторів доступу та не приймає параметри.
• Статичний конструктор (блок коду) викликається автоматично для ініціалізації класу перед створенням першого екземпляра або посиланням на якісь статичні члени.
• Статичний конструктор (блок коду) не можна викликати безпосередньо.
• Користувач не керує тим, коли статичний конструктор (блок коду) виконується у програмі.
Вкладені класи (Nested Classes)
Тип, визначений усередині класу чи структури, називається вкладеним типом.
Екземпляр внутрішнього класу не може існувати без прив'язки до класу верхнього рівня, що містить його.
Статичні класи можуть містити нестатичні Nested-класи.
Анонімний клас
Анонімний клас (anonymous class) – вкладений клас без імені. Анонімні класи використовуються за необхідності нової абстракції, з якою зручно працювати в межах методу, і вона не потрібна за його межами.
Якщо є необхідність створити на базі класу А новий клас і створити екземпляр класу В безпосередньо в цьому місці коду і більше цей об'єкт використовуватися не буде. Можна реалізувати це звичайним успадкуванням:
class B extends A {
... опис полів і методів породженого класу...
} …
A b = new B();
або використати анонімний клас:
A a = new A() {
... опис полів і методів породженого класу...
};
Приклад використання
На підставі анонімного класу створюється потік і запускається за допомогою методу start класу Thread. Синтаксис створення анонімного класу ґрутнується на використанні оператора new з ім'ям класу (інтерфейсу) і тілом нового анонімного класу.
new Thread(new Runnable() {
public void run(){
... }
}).start();
Обмеження анонімних класів
Основне обмеження під час використання анонімних класів – це неможливість опису конструктора, оскільки клас немає імені. Аргументи, які вказані у дужках, автоматично використовуються для виклику конструктора базового класу з тими самими параметрами.
class A {
A(int param) {
}
public static void main(String[] args) {
new A(1) { }; // правильне створення анонімного класу
new A() { }; // неправильне створення анонімного класу
}
}
Обмеження в анонімних класів такі ж як і в локальних класів:
• їх видно лише в межах блоку, в якому оголошені;
• вони не можуть бути оголошені як private, public, protected чи static;
• вони не можуть мати у собі статичних оголошень (полів, методів, класів), винятком є константи (static final).
Переваги анонімних класів
Використання анонімних класів виправдане у багатьох випадках, зокрема коли:
• тіло класу є дуже коротким;
• потрібен лише один екземпляр класу;
• клас використовується у місці його створення або відразу після нього;
• ім'я класу не є важливим і не полегшує розуміння коду.
Перелічування (Enum)
Перелічування – це перелік іменованих констант. Перелічування можуть мати методи, конструктори та змінні екземпляри.
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
Щоб використовувати екземпляр перелічуваного типу, необхідно створити змінну цього типу та присвоїти їй одне з значень:
Day dayToday = Day.MONDAY;
System.out.print(“Today is ” + dayToday);
Q&A
Дякую всім за заняття!🙌🏻
❗️🎓Тема уроку: 6. Статичні та вкладені класи. Анонімні класи та перелічувальні типи
Нагадую, що дедлайн здачі домашніх робіт – до наступного уроку.
Якщо виникають складнощі, пишіть, допоможу із задоволенням 😌
Запис лекції тренер опублікує трохи пізніше 🖥
Не забудьте повторити матеріал та підготуватися до наступного уроку📚
OOP. 1
Прізвище
Вік
Кількість ігор
Кількість закинутих шайб
Визначити середній вік хокеїстів і вивести відомості про хокеїстів, вік яких менший за 25 років.
OOP. 2
Найменування
Виробник
Рік_випуску
Кількість
Ціна
Визначити загальну вартість усіх товарів, що випущені в поточному році, і вивести відомості про ці товари.
OOP. 3
Найменування
Кількість
Ціна
Виробник
Дата_випуску
Визначити середню вартість товарів і товар мінімальною вартістю.