MATLAB® не вызывает конструктор классов при загрузке объекта из MAT-файла. Однако, если вы задаете ConstructOnLoad
атрибут класса к true
, load
вызывает конструктор без аргументов.
Включите ConstructOnLoad
когда вы не хотите реализовывать loadobj
метод, но должен выполнять некоторые действия во время конструкции. Для примера включите ConstructOnLoad
при регистрации прослушивателей для другого объекта. Убедитесь, что MATLAB может вызвать конструктор классов без аргументов без генерации ошибки.
Атрибуты, установленные на суперклассах, не наследуются подклассами. Поэтому MATLAB не использует значение суперкласса ConstructOnLoad
атрибут при загрузке объектов. Если вы хотите, чтобы MATLAB вызвал конструктор классов, установите ConstructOnLoad
атрибут в вашем конкретном подклассе.
Если конструктору требуются входные параметры, используйте loadobj
способ.
loadobj
МетодИспользование loadobj
метод, когда конструктору классов требуются входные параметры для выполнения инициализации объекта.
The 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
The LabResults
класс использует loadobj
для определения состояния заданного тестового значения. Этот подход обеспечивает способ:
Измените критерии для определения статуса
Убедитесь, что объекты всегда используют текущие критерии
Вам не нужно реализовывать saveobj
способ.