Класс и объект: в чём разница простыми словами

Класс и объект — базовые понятия объектно-ориентированного программирования (ООП). Простыми словами: класс — это описание «как устроена сущность» (шаблон, чертёж), а объект — конкретная сущность, созданная по этому описанию (экземпляр). Один класс может порождать много объектов с разными данными, но одной и той же структурой и поведением. В статье разберём в чём разница между классом и объектом, покажем примеры на Python и JavaScript и подскажем, куда двигаться дальше в изучении ООП.
Содержание
- Что такое класс простыми словами
- Что такое объект (экземпляр класса)
- Класс и объект: в чём разница
- Пример на Python: класс и несколько объектов
- Пример на JavaScript: класс и объекты
- Куда двигаться дальше
- Выводы
Что такое класс простыми словами
Класс — это описание типа данных: какие у сущности будут поля (атрибуты, свойства) и какие действия она умеет выполнять (методы). Класс сам по себе не хранит конкретные значения: он задаёт «форму» и правила. Аналогия: класс — это чертёж дома (сколько комнат, где дверь), а не сам дом.
В коде класс определяют один раз: указывают имя, атрибуты и методы. После этого по классу можно создавать сколько угодно объектов — конкретных «экземпляров» с уже заполненными данными.
Что такое объект (экземпляр класса)
Объект (экземпляр класса) — это конкретная «штука», созданная по описанию класса. У объекта уже есть свои значения атрибутов и он может вызывать методы класса. Два объекта одного класса имеют одинаковый набор полей и методов, но данные в полях могут быть разными. По той же аналогии: объект — это уже построенный дом по чертежу (конкретный адрес, конкретные жильцы).
Создание объекта из класса обычно называют инстанцированием (созданием экземпляра). В Python для этого вызывают класс как функцию: obj = MyClass(). В JavaScript — new MyClass() или вызов функции-конструктора.
Класс и объект: в чём разница
Связь можно изобразить так:
Рис. 1 — Один класс задаёт шаблон; объекты — экземпляры с разными данными
Пример на Python: класс и несколько объектов
В Python класс объявляют ключевым словом class. В __init__ задают начальные атрибуты. Каждый вызов User(...) создаёт новый объект (экземпляр):
Здесь User — класс (шаблон). alice и bob — объекты (экземпляры) с разными name и email, но одной и той же структурой и методом greet. Разница между классом и объектом в том, что класс описывает «что такое пользователь», а объекты — конкретных пользователей.
Пример на JavaScript: класс и объекты
В JavaScript (ES6+) класс задаёт конструктор и методы. Объекты создают через new ClassName():
И снова: User — класс (описание), alice и bob — объекты (экземпляры). В JavaScript объекты также могут создаваться через прототипы без синтаксиса class — об этом подробнее в материале ООП в разных языках: зачем и как изучать.
Куда двигаться дальше
Понятия класс и объект — основа ООП. Дальше имеет смысл разобрать наследование, инкапсуляцию, полиморфизм и то, как ООП устроено в разных языках. Как устроено ООП в JavaScript, Python, Java и PHP и в каком порядке это изучать — в статье ООП в разных языках: зачем и как изучать.
Чтобы системно пройти тему в своём стеке, можно взять курс по ООП в нужном языке:
- ООП на JavaScript — классы ES6, прототипы, архитектура и чистый код.
- ООП на Python — классы, SOLID, композиция и наследование на практике.
- ООП в Java — полиморфизм, наследование, интерфейсы.
- ООП в PHP — классы, трейты, архитектура и чистый код на PHP.
Перед углублением в ООП в JavaScript полезно разобрать Прототипы в JavaScript; для общего фундамента — Алгоритмы и структуры данных.
Выводы
- Класс — шаблон (описание типа): какие поля и методы есть у сущности. Определяется в коде один раз.
- Объект — экземпляр класса: конкретная сущность с своими значениями полей. Создаётся по классу (инстанцирование), объектов может быть много.
- Разница между классом и объектом: класс задаёт структуру и поведение, объект хранит данные и использует эту структуру.
- В Python объекты создают вызовом
ClassName(...), в JavaScript —new ClassName(...).
Чтобы глубже разобрать ООП по языкам и порядок изучения, смотрите статью ООП в разных языках: зачем и как изучать.
Категории