MATLAB® организует код определения класса в модульные блоки, разграниченные ключевыми словами. Все ключевые слова имеют связанный end
оператор:
classdef...end
— Определение всех компонентов класса
properties...end
— Объявление имен свойства, спецификация атрибутов свойства, присвоение значений по умолчанию
methods...end
— Объявление сигнатур методов, атрибутов метода и функционального кода
events...end
— Объявление имени события и атрибутов
enumeration...end
— Объявление членов перечисления и перечислимых величин для классов перечисления
properties
Методы
События
, и enumeration
ключевые слова только в classdef
блок.
classdef
блок содержит определение класса в файле, который запускается с classdef
ключевое слово и завершает работу с end
ключевое слово.
classdef (ClassAttributes) ClassName < SuperClass ... end
Например, этот classdef
задает класс под названием MyClass
это разделяет на подклассы handle
класс. Класс также задан, как изолировано, таким образом, вы не можете использовать, наследовались этому классу.
classdef (Sealed) MyClass < handle ... end
Смотрите classdef
для большей информации о синтаксисе.
properties
блок содержит определения свойства, включая дополнительные начальные значения. Используйте отдельный блок для каждого уникального набора спецификаций атрибута. Каждый блок свойств запускается с properties
ключевое слово и завершает работу с end
ключевое слово.
properties (PropertyAttributes) PropertyName size class {validators} = DefaultValue end
Например, этот класс задает частную собственность Prop1
из типа double
со значением по умолчанию.
classdef MyClass properties (SetAccess = private) Prop1 double = 12 end ... end
См. Определение Свойства для получения дополнительной информации.
methods
блок содержит функциональные определения для методов класса. Используйте отдельный блок для каждого уникального набора спецификаций атрибута. Каждый блок методов запускается с methods
ключевое слово и завершает работу с end
ключевое слово.
methods (MethodAttributes) function obj = MethodName(arg1,...) ... end
Например, этот класс задает защищенный метод MyMethod
.
classdef MyClass methods (Access = protected) function obj = myMethod(obj,arg1) ... end end end
Смотрите Задают Методы класса и Функции для получения дополнительной информации.
MATLAB отличается от языков как C++ и Java® в том специальном скрытом объекте класса передается всем методам. Необходимо передать объект класса явным образом к методу.
Используя MyClass
пример, вызовите MyMethod
использование объекта obj
из класса и или функциональный или точечный синтаксис:
obj = MyClass; r = MyMethod(obj,arg1); r = obj.MyMethod(arg1);
Для получения дополнительной информации смотрите Вызов метода.
events
блок (один для каждого уникального набора спецификаций атрибута) содержит имена событий, которые объявляет этот класс. events
блокируйтесь запускается с events
ключевое слово и завершает работу с end
ключевое слово.
classdef ClassName events (EventAttributes) EventName end ... end
Например, этот класс задал событие под названием StateChange
с ListenAccess
установите на protected
.
classdef EventSource events (ListenAccess = protected) StateChanged end ... end
См. События для получения дополнительной информации.
Атрибуты изменяют поведение классов и компонентов класса (свойства, методы и события). Атрибуты позволяют вам задать полезные поведения, не пишущий сложный код. Например, можно создать свойство только для чтения путем установки его SetAccess
припишите частному, но уезжающему его GetAccess
припишите набор общественности.
properties (SetAccess = private)
ScreenSize = getScreenSize
end
Все блоки определения класса (classdef
свойства
Методы
, и events
) поддержите определенные атрибуты. Все атрибуты имеют значения по умолчанию. Задайте значения атрибута только в случаях, где вы хотите измениться от значения по умолчанию.
Примечание
Задайте значение конкретного атрибута только однажды в любом блоке компонента.
Для списков поддерживаемых атрибутов см.:
Когда вы задаете значения атрибута, те значения влияют на все компоненты, заданные в блоке определения. Определение свойств с различными настройками атрибута требует нескольких блоков свойств. Задайте несколько атрибутов в списке, разделенном запятыми.
properties (SetObservable = true)
AccountBalance
end
properties (SetAccess = private, Hidden = true)
SSNumber
CreditCardNumber
end
true
ложь
АтрибутыМожно использовать более простой синтаксис для атрибутов, значениями которых является true
или false
. Одно только название атрибута подразумевает верный и добавляющий, что не оператор (~) к имени подразумевает ложь. Например, эти два способа задать статические методы блокируются, эквивалентны.
methods (Static) ... end methods (Static = true) ... end
Точно так же эти три способа задать непомехи, которые блокируют методы, эквивалентны. Все атрибуты, которые принимают логическое значение, имеют значение по умолчанию false
, таким образом, можно не использовать атрибут, чтобы получить поведение по умолчанию.
methods ... end methods (~Static) ... end methods (Static = false) ... end
Классы перечисления являются специализированными классами, которые задают фиксированный набор имен, представляющих один тип значения. Классы перечисления используют enumeration
блокируйтесь, который содержит члены перечисления, заданные классом.
Блок перечисления запускается с enumeration
ключевое слово и завершает работу с end
ключевое слово.
classdef ClassName < SuperClass enumeration EnumerationMember end ... end
Например, этот класс задает два члена перечисления, которые представляют логические значения false
и true
.
classdef Boolean < logical enumeration No (0) Yes (1) end end
Смотрите Задают Классы Перечисления для получения дополнительной информации.