Перевантажуємі методи
Методи класу.
Цікавим нововведенням в 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)