MATLAB® загружает определение класса:
В первый раз на класс ссылаются, такие как создание экземпляра, доступ к постоянному свойству или вызов статического метода класса.
Каждый раз, когда определение загруженного класса изменяется, и MATLAB возвращается к командной строке.
Когда вы изменяете путь MATLAB и заставляете различное определение класса использоваться. Изменение вступает в силу после того, как MATLAB возвращается к командной строке.
Каждый раз, когда вы получаете доступ к метаданным класса.
MATLAB позволяет только одному определению для класса существовать в любое время. Поэтому MATLAB пытается обновить все существующие объекты класса автоматически, чтобы соответствовать новому определению класса. Вы не должны вызывать clear classes
, чтобы удалить существующие объекты, когда вы изменяете их класс определения.
Используя редактор кроме редактора MATLAB или использования MATLAB Online™ может привести к задержкам с автоматическим обновлением.
MATLAB следует за набором основных правил при обновлении существующих объектов. Автоматическое обновление может привести к:
Существующие объекты обновляются к новому определению класса.
Ошибка, если MATLAB не может преобразовать объекты в новое определение класса или если существует ошибка в самом определении класса.
Вот пример того, что происходит, когда вы создаете экземпляр редактирования реального класса определение класса, чтобы сделать краткий обзор класса.
a = MyClass;
% Edit MyClass to make it Abstract
a
Error using MyClass/display
Cannot update object because the class 'MyClass' is now abstract.
MATLAB не обновляет экземпляры метакласса, когда вы изменяете определение класса. Необходимо получить новые данные о метаклассе после обновления определения класса.
MATLAB обновляет существующие объекты, когда определение класса изменяется, включая следующие ситуации:
Изменение значения в указателе — Существующие объекты становится независимыми указателями, относящимися к различным объектам.
Участник перечисления добавил — Существующие объекты сохраняют участников перечисления, которых они имели ранее, даже если базовые значения изменились.
Участник перечисления удалил — Существующие объекты, которые не используют удаленного участника, имеют тех же участников перечисления, которых они имели ранее. Существующие объекты, которые используют удаленного участника, заменяют удаленного участника на участника по умолчанию перечисления.
Удаленный блок Enumeration — участники Перечисления вынут из использования.
Измененное определение суперкласса — Изменения применилось ко всем подклассам в иерархии того суперкласса.
Суперкласс, добавленный или удаленный — Изменение суперкласса, применился ко всем существующим объектам.
Эти действия не обновляют существующие объекты:
Вызывание функции class
на устаревшем объекте
Присвоение устаревшего объекта к переменной
Вызов метода, который не получает доступ к данным о классе
Изменение валидации свойства в определении класса (Проверка значений свойств)
Объекты не обновляют, пока не ссылается способом, который представляет изменение, такое как вызов отображения объекта или присвоение свойству.
Обновления не происходят инкрементно. Обновления соответствуют последней версии класса.
Удаление файла определения класса не делает экземпляры того класса недопустимыми. Однако вы не можете вызвать методы на существующих объектах того класса.
Некоторый класс обновляет результат в недопустимом определении класса. В этих случаях объекты не обновляют, пока ошибка не разрешена:
Добавление суперкласса может привести к свойству или методу, задаваемому дважды.
Изменение суперкласса, чтобы быть Sealed
, когда объекты одного из его подклассов существует результаты в недопустимом определении подкласса.
Некоторый класс обновляет ситуации с причиной, в которых MATLAB не может обновить существующие объекты соответствовать определению модифицированного класса. Эти случаи приводят к ошибкам, пока вы не удаляете объекты:
Добавление перечисления блокируется к классу неперечисления
Переопределение класса, чтобы быть абстрактным
Удаление класса от неоднородной иерархии, которая заканчивается, там не будучи никаким объектом по умолчанию заменить существующие объекты в разнородном массиве
Обновляя класс, чтобы ограничить поведение формирования массивов, такое как перегрузка индексации массива и конкатенации.
Наследовав subsref
, subsasgn
, cat
, vertcat
или метод horzcat
Переопределение класса Handle, чтобы быть классом значения.
После обновления существующие объекты могут быть несовместимыми с новым определением класса. Например, недавно добавленное свойство может потребовать, чтобы выполнение конструктора было допустимо.
Удаление или переименование свойств могут потерять данные, сохраненные в свойстве. Например, если свойство содержит единственную ссылку на другой объект, и вы удаляете то свойство из класса, MATLAB удаляет объект, потому что больше нет никаких ссылок на него.
Удаление класса от неоднородной иерархии классов может привести к недопустимым элементам разнородного массива. В этом случае объект по умолчанию для неоднородной иерархии заменяет эти элементы массива.
Изменение атрибутов класса может изменить существующее поведение объекта или сделать объекты недопустимыми. MATLAB возвращает ошибку, когда вы получаете доступ к недопустимым объектам.
Изменение | Эффект |
---|---|
Сделайте | Доступ к существующим объектам возвращает ошибку. |
Измените | Недавно созданные объекты могут наследоваться различным суперклассам, чем существующие объекты. |
Измените | Загрузка классов повинуется текущему значению |
Измените | Недавно созданные объекты могут иметь различную иерархию классов, чем существующие объекты. |
Измените | Внешний вид класса в списке суперклассов и доступа функцией |
Измените | Диспетчеризация метода для существующих объектов может измениться. |
Сделайте | Существующие объекты подкласса возвращают ошибки, когда получено доступ. |
Когда вы изменяете определение свойств класса, MATLAB применяет изменения в существующих объектах класса.
Изменение | Эффект |
---|---|
Addproperty | Добавляет новое свойство к существующим объектам класса. Устанавливает значения свойств на значение по умолчанию (который является |
Свойство Remove | Удаляет свойство из существующих объектов класса. Попытки получить доступ к удаленному сбою свойства. |
Измените значение свойства по умолчанию | Не применяет новое значение по умолчанию к существующим объектам класса. |
Свойство Move между подклассом и суперклассом | Не применяет различное значение по умолчанию, когда определение свойства перемещается между суперклассом и подклассом. |
Измените значение атрибута свойства | Применяет изменения в существующих объектах класса. Некоторые случаи требуют переходных шагов:
|
Когда вы изменяете определение методов класса, MATLAB изменяет затронутый член класса в существующих объектах можно следующим образом.
Изменение | Эффект |
---|---|
Добавьте метод | Можно вызвать новый метод на существующих объектах класса. |
Измените метод | Модификации доступны существующим объектам. |
Удалите метод | Вы можете на удаленном методе более длинного вызова на существующих объектах. |
Измените значение атрибута метода | Примените изменения в существующих объектах класса. Некоторые случаи требуют переходных шагов:
|
Изменение | Эффект |
---|---|
Addevent | Существующие объекты класса поддерживают новое событие. |
Поменяйте имя события | Новое имя события видимо к существующим объектам класса. MATLAB:
|
Событие Remove | Существующие объекты больше не поддерживают удаленное событие. |
Измените значение атрибута события | Примените изменения в существующих объектах класса. Некоторые случаи требуют переходных шагов:
|