JavaRush /Курси /JAVA 25 SELF /Поняття класу та об’єкта

Поняття класу та об’єкта

JAVA 25 SELF
Рівень 14 , Лекція 1
Відкрита

1. Що таке клас і об’єкт

Почнімо з аналогії. Уявіть креслення автомобіля. На ньому зазначено, що автомобіль має чотири колеса, двигун, колір, сидіння тощо. Але саме по собі креслення не їздить дорогами, мотор не гуде й бензину воно не потребує. Це лише опис того, як влаштована машина.

Клас у програмуванні — це таке саме «креслення» (або шаблон), що визначає дані (поля) та дії (методи) його екземплярів.

Об’єкт — це вже «реальна» машина, зібрана за цим кресленням, тобто конкретний екземпляр. Кожен об’єкт має свій стан (наприклад, одна машина — червона, інша — синя) і поведінку: об’єкт може виконувати дії, визначені в класі (наприклад, їхати, гальмувати, подавати сигнал).

Приклади з життя

  • Клас: Людина (Person) — опис того, що людина має імʼя, вік, зріст і може говорити або бігати.
  • Об’єкти: Василь, Петро, Катерина — конкретні люди, у кожного своє імʼя та вік.
Клас Об’єкт 1 Об’єкт 2
Person
name = "Василь" 
age = 25
name = "Катерина" 
age = 30

Чому класи важливі?

  • Дають змогу групувати пов’язані змінні та методи.
  • Дають змогу створювати скільки завгодно об’єктів з однаковою структурою, але з різними даними.
  • Дають змогу легко описувати складні сутності: наприклад, «Банківський рахунок», «Товар», «Книга», «Користувач».

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) належать об’єкту, а не самому класу.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ