Статические данные относятся к данным, которые совместно используются всеми объектами класса и которые можно изменить после создания.
Статические данные используются для определения счетчиков, используемых экземплярами класса или другими данными, совместно используемыми всеми объектами класса. В отличие от данных экземпляра, статические данные не изменяются в зависимости от объекта. MATLAB ® предоставляет несколько способов определения статических данных в зависимости от ваших требований.
Классы могут использовать постоянную переменную для хранения статических данных. Определите статический метод или локальную функцию, в которой создается постоянная переменная. Метод или функция предоставляет доступ к этой переменной. Этот метод используется при необходимости сохранения одной или двух переменных.
При сохранении объекта класса, определяющего постоянную переменную, не сохраняются статические данные, связанные с классом. Чтобы сохранить статические данные в объекте или определить более подробные данные, используйте метод статических данных Объект статических данных
StoreData класс определяет статический метод, который объявляет постоянную переменную Var. 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 любому классу, в котором требуется поведение статического свойства.
Чтобы сохранить более обширные данные, определите класс дескриптора с общими свойствами. Назначьте объект класса свойству константы класса, использующего статические данные. Этот метод полезен в следующих случаях:
Добавьте дополнительные свойства или методы, изменяющие данные.
Сохраните объекты класса данных и перезагрузите статические данные.
SharedData класс является классом дескриптора, который позволяет ссылаться на одни и те же данные объекта из нескольких переменных дескриптора:
classdef SharedData < handle properties Data1 Data2 end end
UseData класс является заглушкой класса, который использует данные, хранящиеся в SharedData класс. UseData класс сохраняет дескриптор в SharedData объект в свойстве константы.
classdef UseData properties (Constant) Data = SharedData end % Class code here end
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Чтобы повторно инициализировать свойство константы, очистите все экземпляры UseData и затем очистить класс:
clear a1 a2 clear UseData
Для сохранения неизменяемых значений присвойте данные свойству константы. Все экземпляры класса имеют одно и то же значение для этого свойства. Управление областью доступа к постоянным свойствам путем задания свойства Access атрибут.
Единственным способом изменения значения свойства константы является изменение определения класса. Используйте постоянные свойства, такие как открытые конечные статические поля в Java ®.