6.7 Свойства класса

На верх  Назад  Вперёд

Свойства класса очень похожи на определения глобальных свойств. Они связаны с классом, а не с экземпляром класса.

Следствием этого является то, что для хранения значения свойства должен быть переменной класса, а не обычной переменной: нормальные поля хранятся в экземпляре класса, когда переменные класса, хранятся в типе класса. (Переменные класса хранятся в сегменте данных, а обычные - в "куче")

Свойства класса могут иметь методы получения (Get) и установки (Set), но эти методы дожны быть тоже методами класса (статическими).

Так могут быть определены методы и свойства класса:

TA = Class(TObject)

Private

class var myprivatea : integer;

class Function GetB : Integer; static;

class Procedure SetA(AValue : Integer); static;

class Procedure SetB(AValue : Integer); static;

public

Class property MyA : Integer Read MyPrivateA Write SetA;

Class property MyA : Integer Read GetB Write SetB;

end;

Причиной этих требований является то, что свойство класса связано с конкретным классом (в котором оно было определено), но не дочерним классом. Поскольку методы класса могут быть виртуальными, это позволило бы классам-потомкам переопределить метод, что делает его непригодным для доступа к свойствам класса.