Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / методы virtual, override и др / 6 сообщений из 6, страница 1 из 1
02.12.2003, 12:23
    #32340510
LA
LA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
.....растолкуйте ...в каких случаях применяется override, а в каких virtual, dynamic ....гм и еще есть virtual;abstract...кошмар! ..если есть у кого ссылки на литературу, буду признательна!
...
Рейтинг: 0 / 0
02.12.2003, 12:30
    #32340521
Berg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
Почитай про ООП...Гради Буч там...и иже с ними...Ну, а вкрадце обычно присутствует в любой толковой книжке по Delphi...

Скажем, если ты еще не знаешь зачем все они, то они тебе и не нужны...:-)

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

А вот слово virtual...У...Это долго рассказывать...
...
Рейтинг: 0 / 0
02.12.2003, 12:30
    #32340523
Teo
Teo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
Virtual and dynamic methods

To make a method virtual or dynamic, include the virtual or dynamic directive in its declaration. Virtual and dynamic methods, unlike static methods, can be overridden in descendant classes. When an overridden method is called, the actual (runtime) type of the class or object used in the method call—not the declared type of the variable—determines which implementation to activate.
To override a method, redeclare it with the override directive. An override declaration must match the ancestor declaration in the order and type of its parameters and in its result type (if any).

In the following example, the Draw method declared in TFigure is overridden in two descendant classes.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
type

  TFigure = class
    procedure Draw; virtual;
  end;
  TRectangle = class(TFigure)
    procedure Draw; override;
  end;
  TEllipse = class(TFigure)
    procedure Draw; override;
  end;

Given these declarations, the following code illustrates the effect of calling a virtual method through a variable whose actual type varies at runtime.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var

  Figure: TFigure;
begin
  Figure := TRectangle.Create;
  Figure.Draw;  // calls TRectangle.Draw
  Figure.Destroy;
  Figure := TEllipse.Create;
  Figure.Draw;  // calls TEllipse.Draw
  Figure.Destroy;
end;

Only virtual and dynamic methods can be overridden. All methods, however, can be overloaded; see Overloading methods.

Virtual versus dynamic

Virtual and dynamic methods are semantically equivalent. They differ only in the implementation of method-call dispatching at runtime. Virtual methods optimize for speed, while dynamic methods optimize for code size.
In general, virtual methods are the most efficient way to implement polymorphic behavior. Dynamic methods are useful when a base class declares many overridable methods which are inherited by many descendant classes in an application, but only occasionally overridden.
...
Рейтинг: 0 / 0
02.12.2003, 12:36
    #32340539
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
1) В Паскале не работает сишное правило "однажды виртуальный всегда виртуальный".
2) virtual работает так же, как dynamic, только оптимизирован по скорости, а dynamic - по объёму кода.
3) override перекрывает уже виртуальный или динамический метод. Если эту директиву не писать, то метод будет переопределён заново, а не перекрыт.
4) про abstract уже сказали тебе.
5) есть ещё reintoduce Она прячет сообщения компиллятора.
...
Рейтинг: 0 / 0
02.12.2003, 17:14
    #32341089
Андрей Бабенко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
есть ещё reintoduce Она прячет сообщения компиллятора.
Чего-чего???.... :-))
И где-же потом эти сообщения искать? Вдруг они ещё пригодятся...:-))
...
Рейтинг: 0 / 0
02.12.2003, 18:15
    #32341189
Gold
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
методы virtual, override и др
Вобще-то самая забавная директива - это implements. Всё время забываю как она работает Вот спросите у любого знакомого Дельфиста зачем она - единицы ответят.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / методы virtual, override и др / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]