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 = 'Vasya' | age = 20"]
        petya["petya : Person | name = 'Petya' | 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) принадлежат объекту, а не самому классу.

1
Задача
JAVA 25 SELF, 14 уровень, 1 лекция
Недоступна
Новый компаньон для вашего виртуального мира
Новый компаньон для вашего виртуального мира
1
Задача
JAVA 25 SELF, 14 уровень, 1 лекция
Недоступна
Вдохните жизнь в мурлыкающее чудо
Вдохните жизнь в мурлыкающее чудо
1
Задача
JAVA 25 SELF, 14 уровень, 1 лекция
Недоступна
Создание цифровой энциклопедии
Создание цифровой энциклопедии
1
Задача
JAVA 25 SELF, 14 уровень, 1 лекция
Недоступна
Открытие нового семестра: учёт студентов
Открытие нового семестра: учёт студентов
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Javahue Уровень 15
15 декабря 2025
4. Создание объекта А теперь — магия! Как из чертежа сделать "реальную машину"? Для этого используется ключевое слово new. Синтаксис создания объекта Person vasya = new Person(); //<-- Почему мы говорим в самом начале про машины, а делаем класс Person человека и какого-то Васю? Не соблюдается логика как-то
Ksanders Уровень 32
17 октября 2025
В задаче 4 указано в комментариях про инициализацию полей через конструктор, хотя в самой лекции про конструкторы нет ни слова, как и у условиях и требованиях к задаче. Без конструктора решение тоже принялось.
Ksanders Уровень 32
17 октября 2025
Странно то, что эта тема только на 14 уровне объясняется, учитывая что задачи с методами и классами уже уровней 5 решаются 🧐 Связь с предыдущими лекциями - слабая.

void — метод ничего не возвращает (о возвращаемых значениях поговорим позже).
Уже давно была целая лекция про return.

До сегодняшней лекции все переменные и методы мы объявляли прямо внутри класса с методом main и не задумывались о создании собственных типов.
Была уже много раз работа в задачах вне main.
German Malykh Уровень 31
22 сентября 2025
Визуальная схема: класс и объекты

..........................+------------------------------+
                          | Class Person                 |
                          |------------------------------|
                          | name: String                 |
                          | age:  int                    |
                          |------------------------------|
                          | sayHello()                   |
                          +------------------------------+
                                   ^             ^
                                   |             |
                           :instanceOf    :instanceOf
                                   |             |
+------------------------------+   |             |   +------------------------------+
| vasya : Person               |   |             |   | petya : Person               |
|------------------------------|   |             |   |------------------------------|
| name = 'Vasya'               |   |             |   | name = 'Petya'               |
| age  = 20                    |   |             |   | age  = 25                    |
+------------------------------+   |             |   +------------------------------+

Текущая визуализация сломана 😬
Александр Уровень 50
19 октября 2025
Герман, подскажи, пожалуйста, в каком направлении смотреть, чтобы научиться строить графы и блок-схемы. Чем нормальные люди пользуются?
German Malykh Уровень 31
19 октября 2025
Привет. Я веду заметки и строю схемы в Obsidian + нейросеть любая доступная для помощи 🙂
Andrey Уровень 1
11 сентября 2025
+