Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];
ВнизПотомки и родители Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c