КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Способы наследования и переопределения
Объект обладает важным свойством - наследование, которое позволяет при определении нового объекта- потомка использовать ранее определенный объект- предок или родительский тип. Тип TImage, задающий образец объекта, использоваться в программе самостоятельно не будет, однако он является предком целой иерархии объектов, например: строки, символа. Возьмем в качестве изображения символ и определим его тип, используя в качестве предка тип TImage. Мы хотим сохранить все поля предка, добавив лишь одно поле S, задающее конкретный символ. В этом случае в определении типа потомка необходимо сделать ссылку на имя родительского типа после слова Object:
В этом случае в типе TSymbol неявно присутствуют все поля типа TImage. Аналогично переменной типа TSymbol или PSymbol доступны все методы из TImage, например:
Поля X, Y и методы GetX, GetY унаследованы от предка TImage, поле S определено в типе потомка TSymbol. Введение иерархии объектов позволяет более кратко описывать каждый объект-потомок, благодаря наследованию им всех свойств объекта родителя. Итак тип TSymbol наследует все поля и все методы родительского типа TImage. Однако очевидно, что не все методы предка подходят для манипуляций полями потомка. Например, процедура установки начальных значений Init должна определять кроме координат символа еще и сам символ. Кроме того, процедуры On, Off (включение/выключение изображения) и PrintImage (вывод изображения) целиком определяются типом объекта. Они будут разными для символа и строки, которые являются потомками объекта TImage. Объектно-ориентированный подход позволяет определить новые методы для потомков со старыми именами методов родителя. Это свойство объектов называется переопределением. Рассмотрим новое определение объекта TSymbol:
Объект TSymbol содержит поля X, Y, RX, RY, V, унаследованные от родительского типа TImage, собственное поле S, свои методы TSymbol. Init, TSymbol.On, TSymbol.Off, TSymbol.PrintImage и три унаследованных и не переопределенных метода Move, GetX, GetY. Приведем тексты переопределенных процедур:
Вызов метода осуществляется с использованием имени экземпляра объекта, например:
Отметим, что переопределять можно только методы (но не переменные), причем новый метод может иметь другие формальные переметы (процедура Init). Новый метод "закрывает" одноименный метод в объекте-родителе. Свойство наследования накладывает ограничения на имена полей: имена полей потомка не должны совпадать с именами полей в объекте-родителе. Механизм наследования предоставляет широкие возможности по конструированию новых объектов, используя для их определения некоторые базовые типы, добавляя в них новые поля и переопределяя некоторые методы. Для переменных объектного типа возможно присваивание значений экземпляра одного объекта экземпляру другого объекта в двух случаях: либо они имеют одинаковый объектный тип, либо они состоят в отношении наследования. В этом случае объекту-родителю присваивается значение объекта-потомка, например: TI1:= TS1; Присваивание осуществляется только для полей, являющихся общими для обоих типов.
Дата добавления: 2014-01-06; Просмотров: 290; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |