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; Причиной этих требований является то, что свойство класса связано с конкретным классом (в котором оно было определено), но не дочерним классом. Поскольку методы класса могут быть виртуальными, это позволило бы классам-потомкам переопределить метод, что делает его непригодным для доступа к свойствам класса. |