47. Свойства классов. Понятие, описание, пример использования. Секции описания классов. Одноименные методы. Перегружаемые методы. Методы класса.

Свойства классов. Понятие, описание, пример использования.

Свойство – средство доступа к полям, которые прямо не доступны. Свойства (они published) дают доступ к полям, напрямую недоступным (они private). Формат свойства:

property <Имя>[Индексы]:<Тип> index <Число> Спецификаторы;

Имя имеет индексы, если свойство – массив. index <Число> присутствует, если свойство – массив. Спецификаторы – определяют действия со свойствами.

Пример:

type

TNewClass=class(TObject)

private

FCode:integer;

FNote:string;

published

property Code:Integer read FCode write FCode;

property Note:String read FNote;

end;

Секции описания классов.

<...>

Одноименные методы.

<...>

Перегружаемые методы.

В языке Delphi существует возможность дать двум и более процедурам (функциям) одинаковые идентификаторы при условии, что все такие процедуры (функции) отличаются списком параметров. Такая возможность называется перегрузкой. Для указания того, что процедура (функция) перегружена, служит стандартная директива overload:

procedure Increment(var Value: Integer); overload;

procedure Increment(var Value: Real); overload;

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

Методы класса.

Метод – подпрограмма (процедура или функция), являющаяся членом класса. Объектные методы подобны обычным процедурам и функциям, только они имеют еще экстра-параметр self.

Формат вызова метода: <Объект>.<Метод>. Метод объявляется в классе, как обычная подпрограмма с директивой forward. В описании класса находится заголовок метода, а код метода в разделе реализации метода, где имеет составное имя, включающее тип класса. Способ вызова метод, объявленного в классе, задается модификатором метода, вводимым после заголовка метода через точку с запятой. Если модификатора нет, то метод считается статическим и вызывается, как обычная подпрограмма. Методы могут быть:

Классы имеют виртуальные методы, а объекты – нет. Это и есть отличие между ними. Для объектов достаточно переобъявить тот же метод в объекте потомка с ключевым словом virtual для перекрытия. Для классов ситуация несколько иная: виртуальные методы должны быть перекрыты с ключевым словом override. Если так не сделать, запустится тот же виртуальный метод, скрывающий предыдущий. Ключевое слово Inherited не перескочит на унаследованный метод, если было использовано virtual.

Hosted by uCoz