Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Мы только что передавали методу add () обыкновенное число. Однако, конечно, в качестве параметра функции можно указывать все, что угодно, например объект другого (или того же самого) класса. Листинг 3 иллюстрирует ситуацию. В учебных целях мы создадим еще один класс, MathCornplex1, немного изменив его метод add (). Кроме того, мы добавили еще и метод для получения строкового представления комплексного числа, чтобы не выводить его каждый раз вручную.

Листинг З Пример класса с методом. Файл Math/Complexl.php
Смотрите, мы явно указали перед параметром $у тип MathCornplex1. Это говорит РНР, что мы можем передавать в данную функцию только объекты этого класса, но не другого. Вот как может выглядеть корректное использование данного класса.

Листинг 4 Вызов метода объекта. Файл calll.php
ПРИМЕЧАНИЕ
В отличие от таких языков, как С++ и Java, в РНР не поддерживается создание в одном классе нескольких методов с одинаковым именем, которые бы различались только типами и количеством аргументов. Поэтому-то нам и пришлось создавать класс MathComplex1, а не просто добавить новую функцию add () с аргументом типа MathComplex в имеющийся класс.
Перегрузка преобразования в строку
Посмотрите еще раз на листинг 3. Возможно, вы спросите: почему мы назвали функцию _tostring() столь длинным именем? И зачем эти неуклюжие символы подчеркивания?
Оказывается, в РНР существует ряд имен методов, начинающихся с двойных подчерков, которые имеют специальное значение. Мы только что затронули один из них: это функция __toString (). Она вызывается РНР автоматически всякий раз, когда мы затребуем неявное преобразование ссылки на объект в строку.


Листинг 5 Перегрузка интерполяции. Файл tostring.php
Обратите внимание, что мы вставляем объект $а прямо в строку, и в момент интерполяции переменных РНР вызывает метод __tostring (). Результат будет таким:
Значение: (314, 101)
Если бы не метод __toString () (например, при использовании класса MathComplex, который мы написали в самом начале этой главы), вывод был бы другим:
Catchable fatal error: Object of class MathComplex could not bе converted to string
Как видите, РНР генерирует ошибку, в которой сообщает о невозможности преобразования объекта класса МathComplex в строку.
Инициализация и разрушение
Давайте еще раз взглянем на листинги 4 и 5. Как видите, для корректного создания объекта нам недостаточно просто использовать оператор new: потом приходится еще инициализировать свойства объекта ($re и $im). Конечно, это утомительно, и о присваивании легко случайно позабыть, - в результате будет ошибка. В нашем примере инициализация очень проста, однако в реальной ситуации она может быть, наоборот, весьма объемна (например, если класс требует загрузки каких-нибудь файлов или записей из базы данных).
Конструктор
Давайте взглянем на очередную реализацию нашего класса комплексных чисел (листинг 6).


Листинг 6 Пример класса с конструктором. Файл Math/Complex2.php
Обратите внимание на необычное название метода - _ construct (). Это так называемый конструктор класса. Он вызывается всякий раз, когда вы используете оператор new для объекта.
ПРИМЕЧАНИЕ
В отличие от других языков программирования, в РНР у класса может быть только один конструктор.
Как видите, конструктор принимает два параметра: действительную и вещественную части комплексного числа. Листинг 7 иллюстрирует применение данного класса.

Листинг 7 Использование конструктора. Файл construct.php
Насколько легче стало создание новых объектов! Теперь мы уже при всем желании не сможем пропустить их инициализацию - конструктор будет вызван в любом случае.
Параметры по умолчанию
Как и для обычных функций и методов, для конструкторов можно задавать параметры по умолчанию. Например, объявив его следующим образом:

Мы заставим РНР корректно воспринимать следующие четыре команды:

При этом недостающие параметры будут заполнены значениями по умолчанию (в нашем примере это 0).
В примере, который только что был приведен, по умолчанию создается объект класса MathCornplex2 со значением (0, 0). В языках программирования вроде Java и С++ конструктор класса, который допускает создание объектов без указания параметров, называется конструктором по умолчанию.
|
|
|
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!