Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как в наследнике спрятать не виртуальный метод, из public в private 
:(
    Опции темы
Alexeis
Дата 7.4.2009, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Цитата(cemick @  7.4.2009,  07:33 Найти цитируемый пост)
Да, он с "любым методом" очень не красиво так делать.  

  Не согласен. Суть виртуальности чтобы указатель на предка вызывал метод того класса который создан, а не то чтобы наследник вызывал метод предка. Ни какой связи. 

Цитата(cemick @  6.4.2009,  15:46 Найти цитируемый пост)
Если например у нас иерархия состоит из 20 классов, то вы допускаете возможность в каждом классе менять область видимости как угодно? Или если была в одном классе видимость  изменена с  public на private, то в его наследниках он уже будет не видим?

  Невнимательно читаете, я говорил финальных классах. При правильном проектировании известно какие классы являются промежуточными, какие конечными. Недавно даже специальную директиву ввели final, для того чтобы пометить финальный класс. При попытке наследоваться от такого класса будет синтаксическая ошибка. В таком классе нужно прятать все лишнее. Если посмотреть в VCL перед финальным классом всегда есть промежуточный класс, который реализует 90-100% функционала финального класса (TCustomForm, TCustomEdit и т.д.), вот у него много чего открыто, а вот в финальном TForm, TEdit основные изменение это публикования одних свойств убирание других. Хотя от TForm, TEdit и можно наследоваться, но это весьма неудобно, поэтому для наследования смело берем TCustomForm, TCustomEdit.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
cemick
Дата 7.4.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 2
Всего: 6



ладно, уговорили  smile 

ыз хотя уверен что у бывших борладовских инженеров были причины сделать так, как есть  сейчас.
PM MAIL WWW   Вверх
RinOSpro
Дата 7.4.2009, 15:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно пометить в наследнике процедуру как deprecated конечто это не скроет ее, но будет высвечиватся красивым warning-ом smile
  Вверх
Delphist
  Дата 8.4.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Вообще пришлось в наследнике просто вызывать предка:
Код

TInheritClass = class(TSomeClass)
 private
   procedure Foo; 
  ...
 public
  ...
procedure TInheritClass.Foo;
begin
  inherited;
end;

 end;




--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0503 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.