1. Що таке клас і об’єкт
Почнімо з аналогії. Уявіть креслення автомобіля. На ньому зазначено, що автомобіль має чотири колеса, двигун, колір, сидіння тощо. Але саме по собі креслення не їздить дорогами, мотор не гуде й бензину воно не потребує. Це лише опис того, як влаштована машина.
Клас у програмуванні — це таке саме «креслення» (або шаблон), що визначає дані (поля) та дії (методи) його екземплярів.
Об’єкт — це вже «реальна» машина, зібрана за цим кресленням, тобто конкретний екземпляр. Кожен об’єкт має свій стан (наприклад, одна машина — червона, інша — синя) і поведінку: об’єкт може виконувати дії, визначені в класі (наприклад, їхати, гальмувати, подавати сигнал).
Приклади з життя
- Клас: Людина (Person) — опис того, що людина має імʼя, вік, зріст і може говорити або бігати.
- Об’єкти: Василь, Петро, Катерина — конкретні люди, у кожного своє імʼя та вік.
| Клас | Об’єкт 1 | Об’єкт 2 |
|---|---|---|
|
|
|
Чому класи важливі?
- Дають змогу групувати пов’язані змінні та методи.
- Дають змогу створювати скільки завгодно об’єктів з однаковою структурою, але з різними даними.
- Дають змогу легко описувати складні сутності: наприклад, «Банківський рахунок», «Товар», «Книга», «Користувач».
2. Синтаксис оголошення класу
У Java клас оголошується за допомогою ключового слова class. Після нього — імʼя класу (традиційно — з великої літери), а далі — фігурні дужки, всередині яких записують поля та методи.
Найпростіший приклад
public class Person {
// Тут будуть поля та методи
}
Пояснення:
- public — модифікатор доступу.
- class — повідомляє компілятору: «Я оголошую клас».
- Person — імʼя класу (ви обираєте його самостійно, але з великої літери).
Важливі правила іменування класів
- Назва класу має починатися з великої літери (наприклад, Car, Account, Book).
- У назві класу не допускаються пробіли й спеціальні символи, окрім підкреслення та $ (але це рідкість).
- Якщо назва складається з кількох слів, використовуйте стиль CamelCase: BankAccount, BookStore.
Де писати класи?
Клас можна оголосити в окремому файлі (зазвичай так і роблять: один файл — один клас) або всередині іншого класу (про вкладені класи поговоримо пізніше).
Наприклад, файл Person.java:
public class Person {
// поля та методи
}
3. Поля й методи класу (коротко)
Поки що ми лише оголосили клас, але він порожній — як коробка без вмісту. Додаймо туди «властивості» (поля) та «дії» (методи).
Поля (змінні всередині класу)
Поля описують, які дані матиме кожен об’єкт цього класу.
public class Person {
String name; // імʼя людини
int age; // вік
}
Методи (функції всередині класу)
Методи описують, що вміє робити об’єкт.
public class Person {
String name;
int age;
void sayHello() {
System.out.println("Привіт, мене звати " + name + "!");
}
}
Пояснення:
- void — метод нічого не повертає (про значення, що повертаються, поговоримо пізніше).
- sayHello() — назва методу, круглі дужки обов’язкові.
- Всередині методу можна звертатися до полів класу (наприклад, до name).
4. Створення об’єкта
А тепер — магія! Як із креслення зробити «реальну машину»? Для цього використовують ключове слово new.
Синтаксис створення об’єкта
Person vasya = new Person();
- Person — тип змінної (наш клас).
- vasya — ім’я змінної (можна обрати будь-яке).
- new Person() — створення нового об’єкта типу Person.
Тепер у нас є змінна vasya, яка посилається на об’єкт класу Person. У цього об’єкта є власні поля та методи.
Доступ до полів і методів
Звертаємося до полів і методів через крапку:
vasya.name = "Василь";
vasya.age = 25;
vasya.sayHello(); // Виведе: Привіт, мене звати Василь!
Можна створювати скільки завгодно об’єктів
Person petya = new Person();
petya.name = "Петро";
petya.age = 30;
petya.sayHello(); // Привіт, мене звати Петро!
Кожен об’єкт — незалежна «копія» з власними даними.
5. Зв’язок із попередніми темами
До цієї лекції всі змінні та методи ми оголошували прямо всередині класу з методом main і не замислювалися про створення власних типів. Тепер ми можемо створювати власні «контейнери» даних і функцій.
Це відкриває величезні можливості! Тепер ви можете описувати будь-які сутності, що трапляються у вашому завданні: клієнтів, товари, рахунки, замовлення, тварин, автомобілі — що завгодно. Програми стають більш структурованими, читабельними та масштабованими.
Приклад: наш перший власний клас
Напишімо простий клас для нашого мінізастосунку — скажімо, «Банківський рахунок» (BankAccount). Ми розвиватимемо цей приклад упродовж курсу.
public class BankAccount {
String owner; // власник рахунку
int balance; // баланс рахунку
void printInfo() {
System.out.println("Власник: " + owner + ", баланс: " + balance + " євро.");
}
}
Тепер у головному методі main (який, як і раніше, потрібен для запуску програми) ми можемо створювати об’єкти цього класу:
public class Main {
public static void main(String[] args) {
BankAccount account1 = new BankAccount();
account1.owner = "Іван";
account1.balance = 1000;
account1.printInfo(); // Власник: Іван, баланс: 1000 євро.
BankAccount account2 = new BankAccount();
account2.owner = "Марія";
account2.balance = 2000;
account2.printInfo(); // Власник: Марія, баланс: 2000 євро.
}
}
Зверніть увагу: кожен об’єкт має власні значення полів. Якщо ви зміните баланс у account1, це жодним чином не вплине на account2.
Візуальна схема: клас і об’єкти
graph TD
subgraph Class
Person["Class Person | name:String | age:int | sayHello()"]
end
subgraph Objects
vasya["vasya : Person | name = 'Vasyl' | age = 20"]
petya["petya : Person | name = 'Petro' | age = 25"]
end
vasya --> Person
petya --> Person
Пояснення:
- Person — це клас (шаблон).
- vasya і petya — об’єкти (екземпляри), створені за цим шаблоном.
6. Типові помилки під час оголошення класів і створення об’єктів
Помилка № 1: ім’я класу з малої літери.
У Java прийнято (компілятор не сваритиметься, зате досвідчені програмісти — так!) називати класи з великої літери. Не пишіть class person — пишіть class Person.
Помилка № 2: відсутність фігурних дужок.
Не забувайте, що тіло класу завжди має бути у фігурних дужках.
public class Person // помилка!
String name;
Правильно:
public class Person {
String name;
}
Помилка № 3: спроба звертатися до полів і методів класу без створення об’єкта.
Якщо метод або поле не оголошені як static, звертатися до них можна лише через об’єкт:
Person.sayHello(); // помилка!
Правильно:
Person vasya = new Person();
vasya.sayHello();
Помилка № 4: невідповідність назви файлу та назви класу (для public-класу).
Якщо клас оголошено як public, назва файлу має збігатися з назвою класу:
// Файл Person.java
public class Person { ... }
Якщо файл називається інакше, компілятор видасть помилку.
Помилка № 5: використання полів класу без ініціалізації об’єкта.
Поля класу (не static) належать об’єкту, а не самому класу.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ