Управляйте аспектами определений свойства следующими способами:
Задайте значение по умолчанию для каждого свойства индивидуально, смотрите Значения свойства по умолчанию.
Присвойте значения свойств в конструкторе класса, см. Доступ к значениям свойств из конструктора.
Задайте свойства с постоянными значениями, смотрите Названные Значения.
Присвойте значения атрибута свойства на на основание блока, см. Атрибуты свойств.
Задайте методы, которые выполняются, когда свойство установлено или запрошено, см. Методы доступа к свойствам.
Задайте класс и размер значений свойств, см. Проверку значений свойств.
Задайте свойства, которые не хранят значения, но чьи значения зависят от других свойств, смотрите Типы Свойств.
Всегда используйте чувствительные к регистру имена свойства в своем коде MATLAB®. Свойства не могут иметь того же имени как класс.
Существует два основных подхода для инициализации значений свойств:
В определении свойства — MATLAB выполняет выражение только однажды и присваивает то же значение свойству каждого экземпляра.
В конструкторе класса — MATLAB оценивает выражение присваивания для каждого экземпляра, который гарантирует, что каждый экземпляр имеет уникальное значение.
Для получения дополнительной информации об оценке выражений, которые вы присваиваете как значения свойства по умолчанию, см. Когда MATLAB определяет значение выражения.
В блоке properties
можно управлять значением по умолчанию отдельного свойства. Присвойте значения по умолчанию как выражения MATLAB или значение. Выражения не могут сослаться на переменные. Например:
Prop1
— Никакое присвоение не приводит к пустому значению по умолчанию []
Prop2
— Присвойте символьный массив как значение по умолчанию
Prop3
— Присвойте результат выражения как значение по умолчанию
classdef ClassName properties Prop1 Prop2 = 'some text' Prop3 = sin(pi/12) end end
Если определение класса не задает значение свойства по умолчанию, MATLAB устанавливает значение свойства освобождать double
([]
).
Оценка значений свойства по умолчанию происходит только, когда значение сначала необходимо, и только однажды, когда MATLAB сначала инициализирует класс. MATLAB не переоценивает выражение каждый раз, когда вы создаете экземпляр класса.
Для получения дополнительной информации об оценке выражений, которые вы присваиваете как значения свойства по умолчанию, смотрите Оценку Выражений в Определениях классов и Свойствах, Содержащих Объекты.
Чтобы присвоить значения свойству из конструктора класса, сошлитесь на объект, который конструктор возвращает (выходная переменная obj
):
classdef MyClass properties Prop1 end methods function obj = MyClass(intval) obj.Prop1 = intval; end end end
Когда вы присваиваете свойство в конструкторе класса, MATLAB оценивает оператор присваивания для каждого объекта, который вы создаете. Присвойте значения свойств в конструкторе, если вы хотите каждый объект содержать уникальное значение для того свойства.
Например, предположите, что вы хотите присвоить объект уникального дескриптора свойству другого объекта каждый раз, когда вы создаете один из тех объектов. Присвойте объект указателя свойству в конструкторе. Вызовите конструктора Object указателя, чтобы создать объект уникального дескриптора с каждым экземпляром вашего класса.
Для получения дополнительной информации о методах конструктора смотрите Ссылку на Объект в Конструкторе.
MATLAB присваивает свойства заданным значениям по умолчанию только однажды, когда MATLAB загружает определение класса. Поэтому, если вы инициализируете значение свойства с конструктором класса Handle, MATLAB вызывает этого конструктора только однажды, и каждый экземпляр ссылается на тот же объект указателя. Если вы хотите, чтобы значение свойства было инициализировано к новому экземпляру объекта указателя каждый раз, когда вы создаете объект, присваиваете значение свойства в конструкторе.
Все свойства имеют атрибуты, которые изменяют определенные аспекты поведения свойства. Заданные атрибуты применяются ко всем свойствам в конкретном блоке свойств. Например:
classdef ClassName properties (PropertyAttribute = value) Prop1 Prop2 end end
Например, только методы в том же определении класса могут изменить и запросить свойства Salary
и Password
.
classdef EmployeeInfo properties (Access = private) Salary Password end end
Это ограничение существует, потому что класс задает эти свойства в блоке properties
с набором атрибута Access
к private
.
Для описания атрибутов свойства можно задать, видеть, Атрибуты свойств.
MATLAB вызывает, устанавливая или запрашивая значение свойства. Задайте доступ к набору свойств или получите методы доступа в блоках methods
, которые не задают атрибутов и имеют следующий синтаксис:
methods function obj = set.PropertyName(obj,value) ... end function value = get.PropertyName(obj) ... end end
MATLAB не вызывает метод доступа набора свойств при присвоении значения по умолчанию, заданного в блоке определения свойства.
Например, метод set.Password
тестирует длину символьного массива, присвоенного свойству под названием Password
. Если существует меньше чем семь символов в значении, присвоенном свойству, MATLAB возвращает ошибку. В противном случае MATLAB присваивает заданное значение свойству.
function obj = set.Password(obj,pw) if numel(pw) < 7 error('Password must have at least 7 characters') else obj.Password = pw; end
Для получения дополнительной информации о методах доступа свойства см. Методы доступа к свойствам.
MATLAB может разрешить имя свойства от переменной char
с помощью выражения формы:
object.(PropertyNameVar)
где PropertyNameVar
является переменной, содержащей имя свойства доступного объекта. Используйте этот синтаксис когда передающие имена свойства в качестве аргументов. Например, функция getPropValue возвращает значение свойства KeyType
:
PropName = 'KeyType'; function o = getPropValue(obj,PropName) o = obj.(PropName); end