Статические данные относятся к данным, которые все объекты класса совместно используют и которые можно изменить после создания.
Используйте статические данные для определения счетчиков, используемых образцами классов или другими данными, которые являются общими для всех объектов класса. В отличие от данных образца, статические данные не варьируются от одного объекта к другому. MATLAB® предоставляет несколько способов определения статических данных в зависимости от ваших требований.
Классы могут использовать постоянную переменную для хранения статических данных. Задайте статический метод или локальную функцию, в которой вы создаете постоянную переменную. Метод или функция предоставляет доступ к этой переменной. Используйте этот метод, когда вы хотите хранить одну или две переменные.
Сохранение объекта класса, определяющего постоянную переменную, не сохраняет статические данные, связанные с классом. Чтобы сохранить ваши статические данные в объекте или задать более обширные данные, используйте метод статического объекта данных Static Data Object
The StoreData класс задает статический метод, который объявляет постоянную переменную Var. The setgetVar метод обеспечивает установление и получение доступа к данным в постоянной переменной. Потому что setgetVar метод имеет открытый доступ, можно задать и получить данные, хранящиеся в постоянной переменной глобально. Управляйте возможностями доступа путем установки метода Access атрибут.
classdef StoreData methods (Static) function out = setgetVar(data) persistent Var; if nargin Var = data; end out = Var; end end end
Установите значение переменной путем вызова setgetVar с входным параметром. Метод присваивает входу значение постоянной переменной:
StoreData.setgetVar(10);
Получите значение переменной путем вызова setgetVar без входного параметра:
a = StoreData.setgetVar
a =
10Очистить постоянную переменную путем вызова clear на StoreData класс:
clear StoreData
a = StoreData.setgetVara =
[]Добавьте такой метод, как setgetVar любому классу, в котором необходимо поведение статического свойства.
Чтобы хранить более обширные данные, задайте класс handle с общественной собственностью. Присвойте объект класса свойству constant класса, который использует статические данные. Этот метод полезен, когда вы хотите:
Добавьте дополнительные свойства или методы, которые изменяют данные.
Сохраните объекты класса данных и перезагрузите статические данные.
The SharedData класс является классом handle, что позволяет ссылаться на те же данные объекта из нескольких переменных handle:
classdef SharedData < handle properties Data1 Data2 end end
The UseData класс является заглушкой класса, который использует данные, хранящиеся в SharedData класс. The UseData класс сохраняет указатель на SharedData объект в свойстве constant.
classdef UseData properties (Constant) Data = SharedData end % Class code here end
The Data свойство содержит указатель на SharedData объект. MATLAB создает SharedData объект при загрузке UseData класс. Все впоследствии созданные образцы UseData класс относится к тому же SharedData объект.
Как инициализировать SharedData свойства объекта, загрузка UseData класс путем ссылки на свойство константы.
h = UseData.Data
h =
SharedData with properties:
Data1: []
Data2: []Используйте указатель на SharedData объект для назначения данных значениям свойств:
h.Data1 = 'MyData1'; h.Data2 = 'MyData2';
Каждый образец UseData класс относится к тому же указатель объекта:
a1 = UseData; a2 = UseData;
Ссылка на данные с помощью переменной объекта:
a1.Data.Data1
ans = MyData1
Присвойте новое значение свойствам в SharedData объект:
a1.Data.Data1 = rand(3);
Все новые и существующие объекты UseData класс имеет то же самое SharedData объект. a2 теперь имеет rand(3) данные, которые были назначены a1 на предыдущем шаге:
a2.Data.Data1
ans =
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575Чтобы повторно инициализировать свойство constant, очистите все образцы UseData и затем очистить класс:
clear a1 a2 clear UseData
Чтобы хранить значения констант, которые не изменяются, присвойте данные свойству constant. Все образцы класса имеют одно и то же значение для этого свойства. Управляйте возможностями доступа к постоянным свойствам путем установки свойства Access атрибут.
Единственный способ изменить значение свойства constant - это изменить определение класса. Используйте постоянные свойства, такие как общие конечные статические поля в Java®.