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

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

Потомки и родители [D5, Win2k, WinXP]


Yaro ©   (2002-09-01 07:49:00) 

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


Набережных С.   (2002-09-02 16:10:00) [1]


> Anatoly Podgoretsky © (01.09.02 23:13)
> Набережных С. (01.09.02 20:48)
> Телепат однако

Не, просто выпимши был:)


Юрий Зотов   (2002-09-01 23:50:00) [2]

1. В TClass1 пропущено virtual (или dynamic). Либо в TClass2 надо убрать override.

2. Поменять видимость без внесения изменений - не получится. Самолеты не плавают, а пароходы не летают. Так уж они сделаны - и мы же этому не удивляемся, верно?

Вот и Delphi тоже сделана так, как ее сделали, а не так как нам хочется. Видимость в Delphi не понижается, ее можно только повысить. Почему - это уже вопрос к Borland. Но они сделали именно так и честно написали об этом в документации.

3. А вот с внесением изменений - нет проблем. Например, делаем DoIt статическим, переносим в private и выносим TClass3 в отдельный модуль.


Anatoly Podgoretsky   (2002-09-01 23:13:00) [3]

Набережных С. (01.09.02 20:48)
Телепат однако


Криворукий   (2002-09-01 23:12:00) [4]

Нельзя так сделать. То есть абсолютно.


Yaro   (2002-09-01 23:03:00) [5]

TClass1 = class
public
functionDoIt: boolean;
end;

TClass2 = class(TClass1)
public
functionDoIt: boolean; override;
end;

TClass3 = class(TClass2)
{ЧТО ПИСАТЬ???}
end;

varV: TClass3;

...

v.DoIt - хочу, чтоб ее небыло!!!!!
хочу поменять видимость вункции, без внесения изменений в C1 и C2


Набережных С.   (2002-09-01 20:48:00) [6]


> Yaro © (01.09.02 19:50)

> Сделать их приватными" (с override)-это круто!
Подозреваю, что ты пытаешься понизить область видимости методов.
Если получится, то Borland будет сильно удивлен. Очень сильно.


Юрий Зотов   (2002-09-01 20:16:00) [7]

"Сделать их приватными" и "с override" - это совершенно разные вещи. Извините, но ТАКОЕ я не советовал. Даже после ведра водки ТАКОЕ посоветовать не могу (потому что после ведра водки я уже вообще ничего не могу, даже советовать).

Сделать их приватными - это значит перенести в секцию private. После этого overide теряет всякий смысл. Даже компилятор - и тот ругается.

А вот "пересмотреть структуру классов" - это, похоже, подойдет. Вот только узнать бы суть - о чем, собственно, речь? Простыми русскими словами, если можно. И хоть маленький кусочек объявления классов.


Yaro   (2002-09-01 19:50:00) [8]

Anatoly Podgoretsky -> Это я в курсе, но вот "Сделать их приватными" (с override), как посоветовал Юрий Зотов, не получается... метод не скрывается! Его все-равно видно!


Anatoly Podgoretsky   (2002-09-01 11:20:00) [9]

В дополнение, потомок и предок должны находиться в отдельных модулях


Юрий Зотов   (2002-09-01 11:01:00) [10]

Сделать их приватными (sorry за тривиальный ответ, но что тут еще ответишь?).

Либо пересмотреть структуру классов - вводить нужные методы там, где они должны появляться, не раньше.


Наверх

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