Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИСд шпора2.docx
Скачиваний:
8
Добавлен:
27.09.2019
Размер:
86.39 Кб
Скачать

39.Виртуальные методы.

Для каждого объекта, использующего

виртуальные методы, строится своя таблица

виртуальных методов.

• В каждой такой таблице содержится следующая информация: размер объекта в байтах, список указателей на подпрограммы,

реализующие виртуальные методы.

• Таблица виртуальных методов создается в

процессе компиляции и размещается в

сегменте данных.

• В то время как статические методы вызываются

непосредственно, вызов любого виртуального метода предусматривает обращение к таблице виртуальных методов с целью определения адреса необходимого

метода. Поэтому вызов статического метода

осуществляется быстрее, чем вызов виртуального

метода.

• Кроме того, реализация процесса позднего связывания требует дополнительной памяти, расходуемой на

организацию связи каждого экземпляра объекта с таблицей виртуальных методов.

• Если есть вероятность замены объектом-потомком какого-нибудь метода объекта-предка новым, целесообразно сделать этот метод виртуальным.

Свойство одного того же метода вести себя по-разному называется

полиморфизмом.

40.Другие виды методов.

Методы Dynamic

Механизм Dynamic доступа к другим методам подобен механизму Virtual. В обоих случаях адрес

нужной процедуры или функции определяется

фактическим объектом. Отличие заключается в том, что в данном случае строиться таблица

динамических методов. Обращение к этой таблице происходит медленнее, чем к таблице виртуальных

методов, зато объем программы получается

меньше. Методы Dynamic целесообразно

использовать , когда класс имеет множество

потомков, а число переопределяемых методов небольшое.

Методы Message.

Методы Message – обработка сообщений – представляют собой особую форму динамических методов.

Обработчики сообщений всегда являются

процедурами. Для ускорения поиска в

таблице динамических методов после ключевого слова Message записывается

константа целого типа, являющаяся

индексом нужного метода. В обработчике

сообщений имеется один параметр Var.

Методы Abstract.

Обычно методы создаются для выполнения каких-то конкретных действий. Если по какой-либо

причине это выполнить не удается, метод в классе может быть зарезервирован с обязательным

переопределением его в классах потомков. Такой

метод помечается ключевым словом Abstract. Если

абстрактный метод не переопределен, то вызов

такого метода приводит к вызову специальной

процедуры Abstract, которая генерирует

исключительную ситуацию. Абстрактным не может быть статический метод, так как статические

методы нельзя переопределить.

Методы Override.

Зарезервированным словом Override

помечаются переопределенные

виртуальные или динамические методы .

Методы Class. Исходное назначение методов – определять поведение экземпляров объектов какого-либо класса. В

некоторых случаях необходимо иметь ситуацию, когда

поведение, задаваемое для метода, не должно

зависеть от реально существующего объекта. Такая ситуация возникает с методом, который, например, должен возвращать имя класса. В этом случае метод

помечается ключевым словом Class. В отличие от других команд, таких, как Dynamic, Virtual и т.д., слово Class

ставится перед заголовком метода, например