Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.12;
Скачать: CL | DM;

Вниз

Потомки и родители   Найти похожие ветки 

 
Yaro ©   (2002-09-01 07:49) [0]

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


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

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

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


 
Anatoly Podgoretsky ©   (2002-09-01 11:20) [2]

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


 
Yaro ©   (2002-09-01 19:50) [3]

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


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

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

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

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


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


> Yaro © (01.09.02 19:50)

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


 
Yaro ©   (2002-09-01 23:03) [6]

TClass1 = class
public
function DoIt: boolean;
end;

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

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

var V: TClass3;

...

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


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

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


 
Anatoly Podgoretsky ©   (2002-09-01 23:13) [8]

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


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

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

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

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

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


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


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

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
1-35711
@Ujin
2002-08-30 12:58
2002.09.12
Знаю - достал... Но как программно создать ярлык???


1-35740
murza
2002-08-26 12:21
2002.09.12
TStrings * не считывается из DFM


1-35735
Krann
2002-08-30 14:21
2002.09.12
Значение в ListBox e


8-35827
Muzzy
2002-05-13 07:18
2002.09.12
ГОРЮ!!! Помогите, пожалуйста! Создание составных объектов.


7-35933
Sammary
2002-07-01 17:17
2002.09.12
Ошибка при копировании