Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Переопределение методов

Основные положения объектно-ориентированного программирования | Принципы ООП | Элементы классов | Области видимости | Свойства | Объявление и создание объекта | Уничтожение объекта | События. Взаимодействие объектов. | От структурированного программирования к ООП | Основные задачи структурного программирования |


Читайте также:
  1. IV. Установление методов и технологии ремонта ТС
  2. IX. Данные лабораторных и инструментальных методов исследования.
  3. Алгоритм выбора методов финансового оздоровления
  4. Анализ форм, средств, методов обучения на уроке (авторских методик)
  5. Влияние учения Сократа, Платона и Аристотеля на развитие методов ведения переговоров
  6. Вопрос 1. Понятие и классификация методов государственного управления
  7. Вопрос 3 - Типы производства и их количественная и качественная характеристика с точки зрения использования оборудования, оснастки, методов обработки и организации труда.

Переопределение (overriding) методов в Object Pascal реализует концепцию полиморфизма, позволяя изменять поведение метода от наследника к на­следнику.

Переопределение метода возможно только в том случае, если первоначально он был объявлен как virtual или dynamic.

Для переопределе­ния метода при его объявлении вместо ключевых слов virtual или dynamic следует указать ключевое слово override.

Ниже приведен пример переопре­деления методов, где метод Draw переопределен в двух унаследованных классах TRectangle и TEllipse.

Type

TFigure = class

procedure Draw; virtual;

end;

TRectangle = class(TFigure)

procedure Draw; override;

end;

TEllipse = class(TFigure)

procedure Draw; override;

end;

Здесь первым, объявлен класс TFigure, который затем наследуют классы TRectangle и TEllipse, что видно из объявлений классов, где за ключевым словом class в круглых скобках помещается имя родительского класса.

Директива override приводит к замещению строки описания исходного метода в VMT строкой описания нового метода. Если объявить новые функции с ключевым словом virtual или dynamic, а не override, то вместо замещения старых будут созданы новые методы.

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

Если использовать следующий исполнимый код:

var

Figure: TFigure;

begin

Figure:= TRectangle.Create;

Figure.Draw; // вызывает TRectangle.Draw

Figure.Destroy;

Figure:= TEllipse.Create;

Figure.Draw; // вызывает TEllipse.Draw

Figure.Destroy;

end;

то, в зависимости от того, какая фигура создается, прямоугольник (TRectangle) или эллипс (TEllipse), вызываются разные методы для их прори­совки, хотя способ вызова один и тот же: Figure.Draw;.


Дата добавления: 2015-07-25; просмотров: 70 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Типы методов| Перегрузка методов

mybiblioteka.su - 2015-2024 год. (0.007 сек.)