Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2010, 18:23   #1
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию Наследование

Здравствуйте! Проблема в следующем

Код:
type
TObject1 = class
public
  procedure Call1;
  procedure Call2; virtual; abstract;
end;

TObject2 = class(TObject1)
  procedure Call2; override;
end;

...

procedure TObject1.Call1;
begin
...
Call2;
...
end;

procedure TObject2.Call2;
begin
  inherited;
end;
Уже много кода написал по такой заготовке(очень много!). Всё перепахивать заново - жесть. Такая заготовка не работает, запарился.

Требуется:
Создать объект TObject2. И вызвать его метод Call1 да так, чтобы наследуемый метод Call2 тоже вызывался. не работает. Ребят, помогите!
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 24.05.2010, 18:25   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
procedure TObject2.Call2;
begin
  inherited;//вызовет старый
  ShowMessage('Привет');//должно показать сообщение(в конструкторах работает, должно и здесь)
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2010, 18:28   #3
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Я тоже так думал. Не вызывается. Call1 принадлежит предку и вызывает предок свой метод Call2, а не наследника. А надо чтобы вызывал метод наследника.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 24.05.2010, 18:43   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а понял проблему...ступил просто..

Код:
type
TObject1=class
public
  procedure Call1;
  procedure Call2; virtual; abstract;
end;

TObject2 = class(TObject1)
  procedure Call2; override;
end;


implementation

{$R *.dfm}

procedure TObject1.Call1;
begin
Call2;
end;

procedure TObject2.Call2;
begin
 inherited;
 ShowMessage('123');
end;

var O:TObject1;

procedure TForm1.FormCreate(Sender: TObject);
begin
 O:=TObject2.Create
end;

procedure TForm1.FormClick(Sender: TObject);
begin
 O.Call1;
end;
Д6 работает отменно, сейчас на Д2009 проверю
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.05.2010, 18:51   #5
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

У меня уже некий стандарт на эту тему... Я даже предположить немог что работать не будет...
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 24.05.2010, 18:55   #6
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Простите пожалйста... Кода так много, что забыл дописать override к методу и не увидел этого сразу;

Пепел Феникса, безмерно вам благодарен!!! Вы первый кто взялся помочь))))
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.

Последний раз редактировалось notHaker; 24.05.2010 в 18:58.
notHaker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наследование Yulia13666 Общие вопросы по Java, Java SE, Kotlin 8 09.05.2010 11:39
Наследование Сергей089 Помощь студентам 6 07.02.2010 12:04
Наследование lolopolosko Помощь студентам 1 21.11.2009 17:17
Наследование alex_triton Общие вопросы C/C++ 0 19.10.2009 20:25
Наследование Кирилл13 Общие вопросы C/C++ 1 11.11.2008 14:47