Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вызов метода прапрародителя [D2005]


Страницы:   1 2 3

pvr ©   (2008-02-28 10:39:00) 

Как это сделать?


Сергей М.   (2008-02-28 14:18:00) [1]

Удалено модератором


pvr   (2008-02-28 14:15:00) [2]

Удалено модератором


DiamondShark   (2008-02-28 14:12:00) [3]

Удалено модератором
Примечание: внимательно изучаем п. 11


Сергей М.   (2008-02-28 14:12:00) [4]

Удалено модератором


pvr   (2008-02-28 14:11:00) [5]

Удалено модератором


Сергей М.   (2008-02-28 14:10:00) [6]


> pvr   (28.02.08 14:00) [46]


Вот я и хочу понять, чем оправдана попытка такого рода "вмешательства".
А из приведенного тобой кода совершенно неясно, где в теле TMyClass.InitData происходит попытка вызова какого-либо вирт.метода класса TGrand


pvr   (2008-02-28 14:00:00) [7]

Удалено модератором


Сергей М.   (2008-02-28 13:54:00) [8]

так покажи, где она у тебя есть .. пусть и с "ошибкой синтаксиса" ..


pvr   (2008-02-28 13:50:00) [9]

Здесь нет.


Сергей М.   (2008-02-28 13:49:00) [10]


> procedure TMyClass.InitData; // override;
> begin
>  BaseInitData;
>  ...
> end;
>


Ну и где здесь попытка вызова виртуального метода деда ?


pvr   (2008-02-28 13:43:00) [11]

Неправильно понял слова "не разрешенная по спроектированной диаграмме классов". Согласен.


pvr   (2008-02-28 13:40:00) [12]

В чем ошибка проектирования?

procedure TGrand.BaseInitData;
begin
 ...
end;

procedure TGrand.InitData; // virtual;
begin
 BaseInitData;
 ...
end;

procedure TFather.InitData; // override;
begin
 inherited;
 ...
end;

procedure TMyClass.InitData; // override;
begin
 BaseInitData;
 ...
end;


Palladin   (2008-02-28 13:25:00) [13]


> pvr   (28.02.08 12:53) [38]

возникшая необходимость обращения к методу, дедушки, но не разрешенная по спроектированной диаграмме класов - назвается ошибкой проектирования, кою необходимо исправить пока не поздно.


Сергей М.   (2008-02-28 12:55:00) [14]


> кто-нибудь продолжит растолковывать тебе принципы ООП


Сгораю от нетерпения.


pvr   (2008-02-28 12:53:00) [15]

Может, кто-нибудь продолжит растолковывать тебе принципы ООП, а я уже устал. Прости.


Сергей М.   (2008-02-28 12:53:00) [16]

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


Сергей М.   (2008-02-28 12:50:00) [17]


> pvr   (28.02.08 12:47) [34]


А какое, спрашивается, право внук имеет вмешиваться в дела дедушки ?)


Сергей М.   (2008-02-28 12:48:00) [18]


> проектирование стало плохим


"Вы не любите кошек ? Да вы просто не умеете их готовить !" (c)


pvr   (2008-02-28 12:47:00) [19]

Сергей М. ©   (28.02.08 12:34) [31]

Понял твое недопонимание.

procedure TInherited.Method;
begin
 TGrandFather.Method;
 ...
end;

Экземпляр типа TInherited из своего метода вызывает метод дедушки. При этом используется контекст экземпляра.


Amoeba   (2008-02-28 12:46:00) [20]


> Но в Delphi этой возможностью пожертвовали ради классовых
> методов, и проектирование стало плохим :-)
>

LOL!


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо