Совместимость родственных типов


При самостоятельном желании понять тему " Совместимость родственных типов " вам поможет наш ресурс. Для вас наши специалисты подготовили материал, изучив который вы будете разбираться в ней уровне профессионала. А если у вас останутся вопросы, то задать их вы сможете прямо на сайте написав в чат онлайн-консультанта.

оформить заявку

Слишком сложно? Тогда запросите консультацию специалиста!

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

ознакомиться с условиями

Пусть у нас есть базовый класс Page и производный от него - staticPage. В соответствии с идеологией наследования везде, где может быть использован объект типа Page, возможно и применение staticPage-oбъeктa, но не наоборот! В самом деле, если мы неявно "преобразуем" staticPage в Page, то сможем работать с его Раgе - частью (свойствами и методами): ведь любая статья является также и страницей. В то же время, преобразовать Page в staticPage нельзя: ведь имея объект типа Page, мы не знаем, новость ли это, обычная страница или страница категории (при условии, что эти классы объявляются в программе).

Мы приходим к правилу совместимости типов, существующему в любом объектном языке программирования: объекты производных классов допустимо использовать в том же контексте, что и объекты базовых.

Уточнение типа в функциях

В предыдущих главах мы уже говорили о том, что при определении функций и методов допустимо указывать типы аргументов-объектов. В роли таких типов могут выступать имена классов. Данный механизм называется уточнением типа. Рассмотрим пример:

Данный код корректен: мы передаем функции echoPage() объект типа StaticPage, что совпадает с именем класса в прототипе процедуры. Но задумаемся на мгновение: ведь функции echoPage() , по сути, совершенно все равно, со страницей какого типа она работает. Действительно, метод render() существует у любой страницы, и ее допустимо применять к произвольным объектам, базовый класс которых - Page.

Руководствуясь данными рассуждениями, модифицируем код (листинг 18).

Листинг 18 Уточнение и совместимость типов. Файлы pages/cast.php

Мы увидим, что он прекрасно работает: вместо аргумента типа Page можно подставлять объект класса StaticPage.

Оператор lnstanceof

Проверка совместимости типов производится во время выполнения программы, а не во время ее трансляции. Если мы попробуем вызвать echoPage(З14), то получим такое сообщение:

В РНР существует возможность проверить, "совместим" ли объект с некоторым классом, и без выдачи фатальных сообщений. Для этого применяется новый оператор instanceof. С его использованием функцию movesize() можно было бы переписать так, как показано в листинге 19.

Листинг 19 Оператор instanceof. Файлы pages/instanceof.php

Вместо $class, конечно, можно и явно написать Page. Мы просто хотели продемонстрировать, что с помощью instanceof допустимо использовать имя класса, заданное неявно (в переменной).


Хм, так же просматривали

Заказ

ФОРМА ЗАКАЗА

Бесплатная консультация

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

Этапность

СОПРОВОЖДЕНИЕ КЛИЕНТА

Получить работу можно всего за 4 шага

01
Оставляете запрос

Оформляете заказ работы, заполняя форму на сайте.

02
Узнаете стоимость

Менеджер оценивает сложность. Узнаете точную цену.

03
Работа пишется

Оплачиваете и автор приступает к выполнению задания.

04
Забираете заказ

Получаете работу в электронном виде на вашу почту.

Услуги

НАШ СЕРВИС

Что мы еще делаем?

icon
Эссе

от 480 рублей

ПОДРОБНЕЕ
icon
Диссертации

от 14800 рублей

ПОДРОБНЕЕ
icon
Практические работы

от 1300 рублей

ПОДРОБНЕЕ
icon
Отчеты по практике

от 780 рублей

ПОДРОБНЕЕ
icon
Решение тестов

от 320 рублей

ПОДРОБНЕЕ
icon
Презентации

от 280 рублей

ПОДРОБНЕЕ