Определение свойства

Что можно задать

Управляйте аспектами определений свойства следующими способами:

Примечание

Всегда используйте чувствительные к регистру имена свойства в своем коде 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

Похожие темы

Была ли эта тема полезной?