Перевантажуємі методи

Методи класу.

Цікавим нововведенням в Delphi є так звані методи класу, особливість яких полягає в тому, що для їх виклику немає необхідності створювати об'єкт (екземпляр класу), а можна використовувати їх як звичайні підпрограми. Для опису таких методів використовується ключове слово class перед заголовком методу:

Туре

<Ім’я класу> = class

class <Заголовок метода>; <Опис метода класу>

End;

 

При реалізації методів класу в описовій частині класу ключове слово class також вказується:

class <Ім’я класа>.<3аголовок метода>;

Методи класу застосовуються для створення бібліотек спеціалізованих методів, що не вимагають доступу до яких-небудь даними, які можуть зберігатися в межах обьекга. Як приклад наведемо опис класу MihdClass, метод Get: якого є методом класу (лістинг 2.2).

Лістинг 2.2. Приклад опису методу класу

unit OaclaringClaaaltathoda;

Interface

Type

MthdClass = class

class Function Get5: Double;

End;

Implementation

class Function MthdClaaa. Get5: Integer;

(Опис методу Gets класа MthdClass)

Begin

Result:=5;

end;

end.

Для виклику методу класу потрібно вказати назву класу і назва методу зі списком необхідних параметрів. Назва класу і його метод розділяється крапкою:

<Клас>.<Метод>(<Список параметрів») ;

Використання методу класу показано в наступному листингу 2.3.

Листинг 2.3. Використання методу класу

unit UsingClassMethods ;

Uses DeclaringClasaMethoda ; (Під’єднуємо модуль DeclaringClassMethods,

в якому описаний клас MthdClass)

Interface

Implementation

Procedure UsingClaaa; {Опис процедури UsingClassI Var

A: Integer; {Опис цілочисельної змінної A|

Begin

A := MthdClasa. Get5; (Виклик метода класу по імені класу

та метода, в змінну А заносится значення 5)

end;

end.

Методи класу іноді називаються статичними методами.


Перенавантажувані методи аналогічні перевантажується процедурам і име-ють такий же механнзм роботи. Приклад, можливість опису класу з перевантажується методами приведений в лістингу 2.4.

Лістинг 5.4. Опис класу з перевантажуємими методами

Туре

ACIass = class

Function Mult (А, В: Integer): Integer; overload;

(Заголовок метода Mult з двома цілочисельними параметрами, що повертає цілочисельне значення)

Function Mult(A, В: Double) : Double; overload;

(Заголовок метода Mult з двома речовими параметрами, що повертає речове значення)

end;

Function ACIass.Mult(A, В: Integer): Integer;

begin

Result:=A*B;

end; (Опис першого варіанту метода Multi

Function ACIass .Mult(A, B: Double): Double;

begin

Result:=A*B;

end; (Опис другого варіанту метода Mult)