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 способ.