|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.10.2010, 11:00 | #1 |
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
|
Наследование (классы)
Здравствуйте, уважаемые форумчане!
У меня к вам вопрос, почему Делфи выдает сообщение об ошибке при запуске программы Код:
Код:
Код:
и вообще правильны ли мои знания в теории 1) если пишем reintroduce после метода - то мы сможем затем написать inherited и вызвать (в данном случае) конструктор предка 2) если же мы пишем override после метода - мы полностью перекрываем виртуальный метод предка и затем не сможем вызвать его Заранее спасибо!
Программирование - это великое искусство... Такое же как например и живопись!
Последний раз редактировалось Rusl92; 31.10.2010 в 11:16. |
31.10.2010, 14:36 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
[CODE]
Код:
Код:
inherited можно писать (а можно не писать) для любых методов базового класса.(сравни определения F1и F2)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 31.10.2010 в 14:41. |
31.10.2010, 17:28 | #3 |
Форумчанин
Регистрация: 30.03.2008
Сообщений: 392
|
override; reintroduce; определяет какой из методов будет вызван при использовании переменной базового класса (var r1: Tbas) в которую будет записан объект дочернего класса. r1:=Tclas.create;
ничего не понял из этих слов а то. что inherited можно везде писать понял так чем отличается override от reintroduce??? вообще зачем они - если можно написать просто без них Обьясните пожалуйста... очень важно!
Программирование - это великое искусство... Такое же как например и живопись!
|
31.10.2010, 20:31 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
override указывает что данная процедура "замещает" соответствующую процедуру базового класса. В переменной базового класса с объектом класса наследника будет использоваться процедура наследника.
reintroduce указывает что наследование не должно проводиться. В переменной базового класса с объектом класса наследника будет использоваться базовая процедура. возьми новый проект, добавь две кнопки,скопируй классы и обработчики нажатий кнопок (из моего предыдущего поста). Запусти программу, понажимай кнопки и посмотри что она выдает. Обращай внимание какого класса переменная и какого класса в этой переменной объект. Где-то строка только базового класса,где-то и базового и дочернего, где-то только дочернего.
программа — запись алгоритма на языке понятном транслятору
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
классы.наследование.жидкости | zhenya.ya | Общие вопросы C/C++ | 8 | 23.10.2010 14:13 |
C++ Классы (Наследование) | werser | Помощь студентам | 3 | 15.12.2009 21:30 |
Классы(абстрактный и наследование) | Пепел Феникса | Общие вопросы C/C++ | 6 | 02.11.2009 01:18 |
Классы и наследование. | Scratch | Общие вопросы C/C++ | 9 | 27.09.2008 16:03 |