Статические данные относятся к данным, что все объекты доли класса и что можно изменить после создания.
Используйте статические данные, чтобы задать счетчики, используемые экземплярами класса или другими данными, которые являются общими для все объекты класса. В отличие от данных об экземпляре, статические данные не отличаются от одного объекта до другого. 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 к любому классу, в котором вы хотите поведение статического свойства.
Чтобы хранить более обширные данные, задайте класс Handle с публичными свойствами. Присвойте объект класса к постоянному свойству класса, который использует статические данные. Этот метод полезен когда это необходимо для:
Добавьте больше свойств или методов, которые изменяют данные.
Сохраните объекты класса данных и перезагрузите статические данные.
Класс SharedData является классом Handle, который позволяет вам сослаться на те же данные объектов от нескольких переменных указателя:
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, загрузите theUseData класс путем ссылки на постоянное свойство.
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®.