« Предыдущий вопрос
Расширяющиеся объекты

Если определен порожденный тип, то методы порождающего типа наследуются, однако при желании он

Загрузка
Скачать Получить на телефон
например +79131234567

txt fb2 ePub html

на телефон придет ссылка на файл выбранного формата

Что это

Шпаргалки на телефон — незаменимая вещь при сдаче экзаменов, подготовке к контрольным работам и т.д. Благодаря нашему сервису вы получаете возможность скачать на телефон шпаргалки по информационным технологиям. Все шпаргалки представлены в популярных форматах fb2, txt, ePub , html, а также существует версия java шпаргалки в виде удобного приложения для мобильного телефона, которые можно скачать за символическую плату. Достаточно скачать шпаргалки по информационным технологиям — и никакой экзамен вам не страшен!

Сообщество

Не нашли что искали?

Если вам нужен индивидуальный подбор или работа на заказа — воспользуйтесь этой формой.

Следующий вопрос »
Об ассемблере

Когда-то ассемблер был языком, без знания которого нельзя было заставить компьютер сделать что

Совместимость типов объектов


Наследование до некоторой степени изменяет правила совместимости типов в Borland Pascal. Потомок наследует совместимость типов всех своих предков.


Эта расширенная совместимость типов принимает три формы:


1) между реализациями объектов;


2) между указателями на реализации объектов;


3) между формальными и фактическими параметрами. Совместимость типов расширяется только от потомка к родителю.


Например, TSalaried является потомком TEmployee, а TCommissioned – потомком TSalaried. Рассмотрим следующие описания:


var


AnEmрloyee: TEmployee;


ASalaried: TSalaried;


PCommissioned: TCommissioned;


TEmployeePtr: ^TEmployee;


TSalariedPtr: ^TSalaried;


TCommissionedPtr: ^TCommissioned;


При данных описаниях справедливы следующие операторы присваивания:


AnEmрloyee:=ASalaried;


ASalaried:= ACommissioned;


TCommissionedPtr:= ACommissioned;


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


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


AnEmрloyee:= ACommissioned;


Только поля Name, Title и Rate из ACommissionedбудут скопированы в AnEmployee, так как только эти поля являются общими для TCommissioned и TEmployee. Совместимость типов работает также между указателями на типы объектов и подчиняется тем же общим правилам, что и для реализаций объектов. Указатель на потомка может быть присвоен указателю на родителя. Если дать предыдущие определения, то следующие присваивания указателей будут допустимыми:


TSalariedPtr:= TCommissionedPtr;


TEmployeePtr:= TSalariedPtr;


TEmployeePtr:= PCommissionedPtr;


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


procedure CalcFedTax(Victim: TSalaried);


то допустимыми типами фактических параметров могут быть TSalaried или TCommissioned, но не тип TEmployee. Victim также может быть параметром-переменной. При этом выполняются те же правила совместимости.


Параметр-значение является указателем на действительный, посылаемый в качестве параметра объект, а параметр-переменная является копией фактического параметра. Эта копия включает только те поля, которые входят в тип формального параметра-значения. Это означает, что фактический параметр преобразуется к типу формального параметра.