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

Оглавление:

Anonim

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

PHP - это язык сценариев на стороне сервера. Это один из самых популярных языков в веб-разработке. PHP позволяет обрабатывать файлы, обрабатывать формы, отправлять электронные письма, загружать файлы, подключать приложение к СУБД, такой как MySQL, и выполнять многие другие задачи. Такие фреймворки, как Zend и Code Igniter, основаны на PHP. PHP также поддерживает объектно-ориентированное программирование (ООП). Одно из основных понятий ООП - абстракция. Это помогает скрыть реализации и показать пользователю только функциональные возможности. Абстрактный класс и интерфейс - это два метода достижения абстракции.

Абстракция, Абстрактный класс, Интерфейс, ООП, PHP

Что такое абстрактный класс в PHP

Абстрактный метод - это метод, не имеющий никакой реализации. Абстрактный класс - это класс, у которого есть хотя бы один абстрактный метод. Он может иметь как абстрактные, так и не абстрактные методы. Ключевое слово «abstract» используется для объявления абстрактного класса. Более того, класс, расширяющий абстрактный класс, должен предоставлять реализации абстрактных методов в этом классе. Программисты не могут создавать объекты, используя абстрактный класс, но они могут создавать объект из класса, расширяющего абстрактный класс.

Рисунок 1: Абстрактный класс в PHP

На изображении выше Shape - абстрактный класс. Он имеет абстрактный метод, называемый рисованием, и неабстрактный метод, называемый отображением. Класс треугольника расширяет Shape. Итак, класс треугольника обеспечивает реализацию абстрактного метода draw. В строке 19 создается объект Triangle. В строке 20 вызывается метод рисования с использованием этого объекта. Таким образом, выполняется метод рисования, и на консоли отображается «Треугольник».

Что такое интерфейс в PHP

Все методы в интерфейсе - абстрактные. Другими словами, он содержит только прототипы функций или функции без реализации. Программист не может создавать объекты с помощью интерфейса. Интерфейс объявляется с использованием ключевого слова interface. Несмотря на то, что методы интерфейса являются абстрактными, программист не объявляет их с помощью ключевого слова abstract. Вместо этого эти методы должны иметь общедоступную область видимости. Класс, реализующий интерфейс, должен предоставлять реализации для всех своих абстрактных методов.

Рисунок 2: PHP-программа 1 с интерфейсом

В приведенной выше программе Shape - это интерфейс. У него есть метод под названием draw. У него нет реализации. Класс Triangle расширяет Shape. Класс Triangle обеспечивает реализацию метода рисования. В строке 16 создается объект Triangle. В строке 17 вызывается метод рисования с использованием этого объекта. Таким образом, выполняется метод рисования, и на консоли отображается «Треугольник».

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

Рисунок 3: Программа PHP с интерфейсами

Интерфейс A имеет метод methodA. Точно так же интерфейс B имеет метод methodB. Эти методы являются прототипами функций. Другими словами, у этих методов нет никаких реализаций. Class Test реализует интерфейс A и B. Таким образом, этот класс предоставляет реализации для methodA и methodB. У Class Test также есть свой собственный метод под названием methodTest. Строка 26 создает объект Test. Затем вызываются methodA, method и methodTest с использованием этого объекта.

Разница между абстрактным классом и интерфейсом в PHP

Определение

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

Методы

Абстрактный класс может иметь абстрактные методы, а также не абстрактные методы, в то время как все методы в интерфейсе являются методами без реализаций.

Ключевое слово

В то время как абстрактный класс объявляется с ключевым словом «abstract», интерфейс объявляется с ключевым словом «interface».

использование

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

Заключение

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

Использованная литература:

1. «Абстрактные классы в PHP». GeeksforGeeks, 11 декабря 2018 г., доступно здесь. 2. «Множественное наследование в PHP». GeeksforGeeks, 21 февраля 2019 г., доступно здесь.

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