Чем класс отличается от объекта в объектно-ориентированном программировании?

«Чем класс отличается от объекта в объектно-ориентированном программировании?» — вопрос из категории ООП, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Класс — это абстрактный шаблон или тип данных, который определяет структуру (свойства/поля) и поведение (методы) для будущих объектов. Это декларация, не занимающая память под данные.

Объект — это конкретный экземпляр (instance) класса, созданный в памяти во время выполнения программы. Он содержит реальные данные в своих полях.

Простая аналогия: Класс — это чертёж дома (планировка, материалы). Объект — это построенный по этому чертежу реальный дом с конкретным адресом и жильцами.

Пример на PHP:

// Класс — это шаблон
class User {
    public string $name; // Свойство (поле)
    public function greet(): string { // Метод (поведение)
        return "Привет, меня зовут $this->name!";
    }
}

// Объекты — конкретные экземпляры
$user1 = new User();
$user1->name = 'Анна';
echo $user1->greet(); // Вывод: Привет, меня зовут Анна!

$user2 = new User();
$user2->name = 'Иван';
echo $user2->greet(); // Вывод: Привет, меня зовут Иван!

Один класс User используется как форма для создания множества независимых объектов с разными данными.