Что такое абстрактный класс и чем он отличается от интерфейса в php?

Пользователь

от jamey.kohler , в категории: PHP , 2 года назад

Что такое абстрактный класс и чем он отличается от интерфейса в php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от nelle , год назад

@jamey.kohler 

Абстрактный класс - это специальный тип класса в PHP, который не может быть создан сам по себе, а только наследуется другими классами. Он может содержать абстрактные методы, то есть методы без реализации, которые обязаны быть реализованы в классах-потомках. Абстрактный класс используется для того, чтобы определить общую структуру и функциональность для ряда классов, которые являются его потомками.


Интерфейс - это также специальный тип класса в PHP, который также не может быть создан сам по себе, но может быть реализован другими классами. Он содержит только абстрактные методы, но не может содержать реализации этих методов или какие-либо переменные. Классы, которые реализуют интерфейс, обязаны реализова

Пользователь

от otha_marks , 9 месяцев назад

@jamey.kohler 

Абстрактный класс в PHP - это класс, который не может быть инстанциирован, то есть создан в виде объекта. Он используется для создания общего шаблона для подклассов, которые должны реализовать его абстрактные методы и/или использовать его абстрактные свойства.


Основные отличия абстрактного класса от интерфейса в PHP следующие:

  1. Абстрактный класс может иметь переменные (свойства класса), а интерфейс нет.
  2. Абстрактный класс может иметь обычные методы (не абстрактные), которые могут содержать реализацию, а интерфейс только объявляет методы без их реализации.
  3. Класс может реализовать несколько интерфейсов одновременно, но может расширять только один абстрактный класс.
  4. Абстрактный класс используется для создания общего шаблона классов, а интерфейс служит для определения контракта, которому должны соответствовать классы, которые его реализуют.
  5. Класс, наследующий абстрактный класс, должен реализовать все его абстрактные методы, а класс, реализующий интерфейс должен реализовать все методы этого интерфейса.