♦ Единичное наследование
Язык РНР обеспечивает наследование определения класса от другого класса с использованием конструкции extends. Наследуются и переменные экземпляра, и методы.
♦ Множественное наследование
Язык РНР не поддерживает множественное наследование, и в нем не реализовано так же понятие наследования интерфейса, как в языке Лача. Каждый класс может наслед вать свои определения не больше чем от одного родительского класса (хотя класс может применяться для реализации нескольких интерфейсов).
♦ Конструкторы
Каждый класс может иметь одну функцию-конструктор, которая в языке РНР носит имя __construct(). Обратите внимание на то, что перед именем функции стоят два символа подчеркивания. В версиях, предшествующих РНР5 (в которых применялось ядро Zend Engine 1), функция-конструктор класса имела такое же имя, как и класс, поэтом в языке РНР все еще допускается (но не рекомендуется) применять такой способ именования конструктора для обеспечения обратной совместимости. Конструктор родительского класса не вызывается автоматически, но долже� � быть вызван явно.
♦ Деструкторы
С версии РНР5 язык РНР поддерживает явно заданные деструкторы. Функция-деструктора класса всегда носит имя __destruct().
♦ Управление инкапсуляцией и доступом
Начиная с версии РНР5, язык РНР поддерживает открытые (public), закрытые (private и защищенные protected) переменные экземпляра и методы.
♦ Полиморфизм и перегрузка
Язык РНР поддерживает полиморфизм в том смысле, что позволяет использовать вместо экземпляров родительского класса экземпляры подкласса. Ввод в действие требуемого метода осуществляется на этапе прогона. Поддержка перегрузки методов, при которой ввод метода в действие осуществляется с учетом сигнатуры метода, отсутствует.Дело в том, что в каждом классе может присутствовать только один метод с определенным именем. Но благодаря тому, что в языке РНР применяется слабая типизация и поддерживается переменное количество параметров, по� �вляется возможность обойти это ограничение.
♦ Сравнение раннего и позднего связывания
На вопрос о том, применяется ли в языке РНР раннее или позднее связывание, можно дать два в равной степени одинаково правильных ответа: во-первых, этот вопрос не может возникнуть, поскольку в языке РНР не применяется строгая типизация, и, во-вторых все операции связывания являются поздними. В языке РНР значения являются типизированными, а переменные — нет, поэтому в отличие от многих других языков программирования не возникает вопрос о том, какой метод должен быть вызван, если переменная имеет тип, отличный от ее значения.
♦ Статические функции (или функции класса)
Начиная с версии РНР5, язык РНР предоставляет возможность использовать статические переменные и статические методы. Существует также возможность вызывать методы с помощью синтаксической конструкции Classname::function().
♦ Самодиагностика
Язык РНР предоставляет широкий перечень функций самодиагностики, в частности, он позволяет выявлять имена классов, имена методов и имена переменных экземпляра с помощью диагностирования полученного экземпляра.
Комментариев нет:
Отправить комментарий