Статические члены класса |
Для объявления статических методов и свойств существует два способа. Первый - использовать квалификатор static перед объявлением метода или свойства (см. Описание функции и процедуры "").
Второй способ - использовать секцию static в реализации объекта (см. Описание реализации объектов "").
Для того, что бы обратиться к статическому члену класса необходимо указать имя типа, квалификатор "::", а затем имя члена (метод, свойство):
vGetName::SetName('Иванов Иван Иванович"); str := vGetName::GetName;
Особенностью использования является то, что, система будет автоматически заводить как-бы разделяемый экземпляр объекта, а фактически глобальную переменную с внутренним именем и типом указанного vipInterface. Эта глобальная переменная будет одна на все приложение и все обращения к статическим функциям и свойствам будут идти через нее.
Отсюда следует, что:
ObjInterface не может использоваться для объявления статических методов и свойств.
Так как доступа к переменной напрямую нет, то нет и возможности приводить vipInterface к различным objInterface, которые он реализует. Следовательно, нет возможности обращаться к сущностям с пересекающимися именами.
Через квалификатор "::" можно обращаться только к свойствам и методам имеющим квалификатор static.
Особенностей реализации static методов и свойств нет никаких. Нужно только помнить, что будет заводиться не разделяемый, а повторно используемый экземпляр объекта.
// Описываем интерфейс, содержащий статические методы vipInterface IGetName; static: function GetName : string; function GetAge : integer; end; ... // Вызываем статические методы str := vGetName::GetName; age := vGetName::GetAge;