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