Перейти к основному содержимому

3. Объектно-ориентированное программирование (ООП)

Что такое класс и объект?​

Junior

Ответ:

  • Класс: Шаблон или чертёж для создания объектов. Определяет свойства (атрибуты) и методы (поведение).
  • Объект: Экземпляр класса. Это конкретная реализация шаблона с собственным состоянием.

Каковы основные характеристики ООП?​

Junior

Ответ:

  • Инкапсуляция: Объединение данных и методов, работающих с этими данными, в одну единицу (класс) с ограничением прямого доступа.
  • Наследование: Механизм, при котором подкласс наследует свойства и поведение от суперкласса.
  • Полиморфизм: Способность объектов разных классов обрабатываться как экземпляры одного интерфейса или родительского класса.
  • Абстракция: Сокрытие сложных деталей реализации и отображение только существенных характеристик объекта.

Что такое модификаторы доступа в PHP?​

Junior

Ответ:

  • public: Доступен отовсюду.
  • protected: Доступен внутри самого класса и в наследующих классах.
  • private: Доступен только внутри класса, в котором объявлен.

Что такое конструкторы и деструкторы?​

Junior

Ответ:

  • __construct(): Специальный метод, автоматически вызываемый при создании экземпляра объекта.
  • __destruct(): Специальный метод, вызываемый при уничтожении объекта или завершении скрипта.

В чём разница между this, self и static?​

Middle

Ответ:

  • $this: Ссылается на текущий экземпляр объекта.
  • self: Ссылается на текущий класс. Используется для статических свойств и методов.
  • static: Ссылается на вызываемый класс (позднее статическое связывание — Late Static Binding). this vs self vs static

В чём разница между интерфейсом и абстрактным классом?​

Middle

Ответ:

  • Интерфейс: Определяет контракт. Может содержать только публичные методы без реализации. Класс может реализовывать несколько интерфейсов.
  • Абстрактный класс: Может содержать как абстрактные методы, так и конкретные методы с реализацией. Класс может наследовать только один абстрактный класс. Сравнение интерфейса и абстрактного класса

Что такое трейты (Traits)?​

Middle

Ответ: Трейты — это механизм повторного использования кода в языках с одиночным наследованием, таких как PHP. Они позволяют включать наборы методов в несколько независимых классов.


Что такое переопределение методов (Method Overriding)?​

Middle

Ответ: Переопределение методов происходит, когда подкласс предоставляет собственную реализацию метода, уже определённого в родительском классе.


Какие существуют виды наследования?​

Middle

Ответ:

  • Одиночное: Класс наследует от одного родительского класса.
  • Многоуровневое: Класс наследует от родителя, который сам является подклассом.
  • Иерархическое: Несколько подклассов наследуют от одного родительского класса.
  • Гибридное: Комбинация двух или более видов наследования (с использованием трейтов/интерфейсов). Примечание: PHP не поддерживает множественное наследование напрямую.

Что такое пространства имён (Namespaces) в PHP?​

Middle

Ответ: Пространства имён предоставляют способ группировки связанных классов, функций и констант для предотвращения конфликтов имён.


В чём разница между абстракцией и инкапсуляцией?​

Middle

Ответ:

  • Абстракция: Сокрытие сложных деталей реализации и отображение только существенных характеристик объекта (фокус на «Что»).
  • Инкапсуляция: Объединение данных и методов вместе с ограничением прямого доступа к некоторым компонентам объекта (фокус на «Как»).

Что такое магические методы?​

Middle

Ответ: Специальные методы, начинающиеся с __, которые вызываются при определённых событиях (например, __get, __set, __call, __toString, __sleep, __wakeup).


Что такое перегрузка методов (Method Overloading) в PHP?​

Senior

Ответ: PHP не поддерживает классическую перегрузку методов (одинаковое имя, разные аргументы). Вместо этого используются магические методы, такие как __call(), для имитации этого поведения. Перегрузка методов в PHP