![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Потомки и родители [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 за тривиальный ответ, но что тут еще ответишь?).
Либо пересмотреть структуру классов - вводить нужные методы там, где они должны появляться, не раньше.