КАТЕГОРИИ: Архитектура-(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) |
Статичні методи
Список формальних параметрів статичних методів може бути різним у методу предка і методів нащадків, перевизначений (замінюючий) цей метод предка. Із статичним методом пов'язаний спосіб спадкоємства. Якщо в оголошенні нащадка з'являється метод з тим же ім'ям, що і у предка, то в цьому типі і у всіх його нащадках цей метод буде перевизначений. Таким чином, нащадки можуть використовувати перевизначені ними методи предка. Предок може викликати тільки свої методи; методи нащадків для нього недоступні. Таким чином, при використанні статичних методів поліморфізм розповсюджується від поточного рівня ієрархії вниз, до нащадків. Дії компілятора при обробці методів ієрархії об'єктів для статичних методів: 1) при виклику методу компілятор встановлює тип об'єкту, що викликає 2) потім він шукає метод в межах цього типу; знайшовши його, компілятор призначає виклик цього методу; 3) якщо метод не знайдений, то компілятор розглядає тип безпосереднього предка і шукає метод в його оголошенні: a) якщо метод з таким ім'ям знайдений, формується виклик методу цього b) якщо метод не знайдений в типі найближчого предка, компілятор переходить c) якщо компілятор, дійшовши до верхнього рівня ієрархії, не знайде метод, Field identifier expected - очікується ідентифікатор поля. Це повідомлення видається, якщо ідентифікатор не відповідає імені поля змінної типу RECORD або типу OBJECT.
Лістинг 1. Виклики статичних методів предка і нащадка. Program novirt1; Uses Crt; Type ObjName1 = object { - оголошення об'єкту-предка } Fl1: integer; { - поле } Procedure Met1; { - методи } Procedure Met2; End; ObjName2 = object (ObjName1) { - оголошення нащадка } Procedure Met2; { - заміна статичного методу } End; { ------------ Методи об'єкту Objname1--------------------------------- } Procedure ObjName1.Met1; Begin Met2; { - виклик тільки методу Objname1.Met2!!} End; Procedure ObjName1.Met2; Begin FL1:= 12; Writeln ( ' Працює метод ObjName1.Met2: FL1 = ', FL1) End; { -------------- Метод об'єкту ObjName2 ------------------------------- } Procedure ObjName2.Met2; Begin FL1:= 34; Writeln ( ' Працює метод ObjName2.Met2: FL1 = ', FL1) End; Var V1:ObjName1; { - змінна об'єктного типу - предка } V2: ObjName2; { - " " " нащадка } {---------------- Основна програма ---------------------------------------} Begin ClrScr; Assign (Output, 'Inovirt.res'); Rewrite (Output); Writeln (‘ОБ'ЄКТИ, СТАТИЧНІ МЕТОДИ’); Writeln ( ' Працюємо з VI - екземпляром типу предка'); V1.Met1; {- викликається метод Met1 для екземпляра V1 - предка } { Met1 викликає метод Objname1.Met2 - предка } V1.Met2; { - безпосередньо викликається метод Objname1.Met2; } Writeln ( ' Працюємо з V2 - екземпляром типу нащадка'); V2.Met1; { - викликається метод Met1 для екземпляра V2 - нащадка; Met1 викликає метод Objname1.Met2 - предка, а не Objname2.Met2 - нащадка - в цьому - обмеження } V2.Met2 { - безпосередньо викликається метод Objname2.Met2; } Close (Output); End.
Мал. 2 Схема обмеження виклику перевизначених статичних методів
Дата добавления: 2014-01-04; Просмотров: 733; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |