Справочник функций и процедур Delphi: Override

  Навигация по первой букве:

A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z

  Навигация по категории:

Compiler directives, Directives, Keywords / Types, Variables, Constants / Functions, Procedures

  Реклама:

 

Override
Деректива
Определяет метод, который заменяет виртуальный родительский метод класса unit
  Function|Procedure declaration; Override;

Google  
 
Описание
Директива Override определяет метод класса как замена так же названного метода в родительском классе.

Например, Вы могли бы хотеть отменить (заменить) операцию конструктора, чтобы принять во внимание изменения класса, введенные вашим классом. Вы можете только отменить классы определенные как виртуальные (virtual) или динамический (dynamic) (последний вне области основ Delphi).

Только те методы, которые могут быть заметно изменены полученным классом, обычно позволяют сделать так. Если метод отмечен как абстрактный (abstract), так же как и виртуальный (virtual), тогда Вы должны отменить его и осуществить его чтобы он был используемым пользователем вашего класса.
Похожие команды
Abstract  Определяет метод класса, осуществляемый только в подклассах

Function  Определяет подпрограмму, которая возвращает значение

Overload  Позволяет 2-м или более подпрограммам иметь одинаковое название

Procedure  Определяет подпрограмму, которая не возвращает значение

 
Пример кода : Замена абстрактных методов
// Полный код Модуля.
// -----------------------------------------------------------
// Вы должны поместить этот код в модуль с именем Unit1 и с формой
// названную Form1, которая имеет событие OnCreate названное FormCreate.

unit Unit1;

interface

uses
  Forms, Dialogs, Classes, Controls, StdCtrls, SysUtils;

type
  // определение базового класса TPolygon:
  // Этот класс - треугольник если 3 стороны, квадрат если 4 стороны...
  TPolygon = class
  private
    sideCount  : Integer;  // Сколько сторон?
    sideLength : Integer;  // Какой длины каждая сторона?
    shapeArea  : Double;   // Область многоугольника
  protected
     procedure setArea; Virtual; Abstract;  
  published
    property count  : Integer read sideCount;
    property length : Integer read sideLength;
    property area   : Double  read shapeArea;
    constructor Create(sides, length : Integer);
  end;

  // Определение потомков треугольника и квадрата
  TTriangle = class(TPolygon)
  protected
    procedure setArea; Override;   // Замена абстрактного метода
  end;

  TSquare = class(TPolygon)
  protected
    procedure setArea; Override;   // Замена абстрактного метода
  end;

  // Определение класса формы используемой этим модулем
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm} // Вложение определений формы

// Создание объекта TPolygon
constructor TPolygon.Create(sides, length : Integer);
begin
  // Сохранение числа и длины сторон
  sideCount := sides;
  sideLength := length;

  // Установка области используя метод setArea:
  // Этот вызов будет удовлетворен только подклассом
  setArea;
end;

// Выполнение родительского для треугольника абстрактного метода setArea
procedure TTriangle.setArea;
begin
  // Вычисление и сохранение площади треугольника
  shapeArea := (sideLength * sideLength) / 2;
end;

// Выполнение родительского для квадрата абстрактного метода setArea
procedure TSquare.setArea;
begin
  // Вычисление и сохранение площади квадрата
  shapeArea := sideLength * sideLength;
end;

// Основная линия кода
procedure TForm1.FormCreate(Sender: TObject);
var
  triangle : TTriangle;
  square   : TSquare;
begin
  // Создание треугольника и квадрата
  triangle := TTriangle.Create(3, 10);
  square   := TSquare.Create(4, 10);

  // Показ значений площади наших многоугольников:
  ShowMessageFmt('Площадь тругольника = %f',[triangle.area]);
  ShowMessageFmt('Площадь квадрата = %f',[square.area]);
end;

end.
Площадь тругольника = 50.0
Площадь квадрата = 100.0
 


Copyright © 2004-2016 Delphi Sources (источник – "DelphiBasics.ru")
 


Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook