MATLAB® не вызывает конструктора класса при загрузке объекта из MAT-файла. Однако, если вы устанавливаете ConstructOnLoad
атрибут класса к true
загрузка
действительно вызывает конструктора без аргументов.
Включите ConstructOnLoad
когда вы не хотите реализовывать loadobj
метод, но должен выполнить некоторые действия во время создания. Например, включите ConstructOnLoad
когда вы указываете прослушиватели для другого объекта. Убедитесь, что MATLAB может вызвать конструктора класса без аргументов, не генерируя ошибку.
Набор атрибутов на суперклассах не наследован подклассами. Поэтому MATLAB не использует значение суперкласса ConstructOnLoad
припишите когда загружаемые объекты. Если вы хотите, чтобы MATLAB вызвал конструктора класса, установите ConstructOnLoad
припишите в своем определенном подклассе.
Если конструктор требует входных параметров, используйте loadobj
метод.
loadobj
МетодИспользуйте loadobj
метод, когда конструктор класса требует, чтобы входные параметры выполнили объектную инициализацию.
LabResults
класс совместно использует шаги инициализации объекта конструктора с loadobj
метод путем выполнения этих шагов в assignStatus
метод.
Объекты LabResults
класс:
Содержите значения для результатов тестов.
Присвойте состояние для каждого значения на основе набора критериев.
classdef LabResult properties CurrentValue end properties (Transient) Status end methods function obj = LabResult(cv) obj.CurrentValue = cv; obj = assignStatus(obj); end function obj = assignStatus(obj) v = obj.CurrentValue; if v < 10 obj.Status = 'Too low'; elseif v >= 10 && v < 100 obj.Status = 'In range'; else obj.Status = 'Too high'; end end end methods (Static) function obj = loadobj(s) if isstruct(s) cv = s.CurrentValue; obj = LabResults(cv); else obj = assignStatus(s); end end end end
LabResults
класс использует loadobj
определить состояние данного тестового значения. Этот подход обеспечивает путь к:
Измените критерии определения состояния
Убедитесь, что объекты всегда используют текущие критерии
Вы не должны реализовывать saveobj
метод.