Статические данные относятся к данным, которые все объекты класса совместно используют и которые можно изменить после создания.
Используйте статические данные для определения счетчиков, используемых образцами классов или другими данными, которые являются общими для всех объектов класса. В отличие от данных образца, статические данные не варьируются от одного объекта к другому. 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.setgetVar
a = []
Добавьте такой метод, как 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®.