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 метод.