MATLAB® Software версии 7.6 представляет новый синтаксис для определения классов. Этот новый синтаксис включает:
The classdef
ключевое слово начинает блок кода описаний классов. Система координат end
оператор завершает определение класса.
В пределах classdef
кодовый блок, properties
, methods
, и events
являются также ключевыми словами, описывающими, где вы задаете соответствующие члены класса.
Невозможно создать иерархии классов, которые смешивали бы классы, заданные до версии 7.6, и текущие определения классов, которые используют classdef
. Поэтому нельзя подклассифицировать старый класс, чтобы создать версию нового класса.
Для классов, определенных с помощью новой classdef
ключевое слово, папка класса затеняет все папки класса, которые происходят после нее в пути MATLAB. Классы, определенные в папках классов, должны найти все файлы классов в этой одной папке. Однако классы, определенные в папках классов, продолжают иметь приоритет над функциями и скриптами, имеющими то же имя, даже те функции и скрипты, которые находятся перед ними в пути.
Вам не нужно определять частные папки в папках классов версии 7.6. Можно задать Access
метода атрибут к
private
вместо этого.
Методы конструктора классов имеют два основных различий. Конструкторы классов:
Не используйте class
функция.
Необходимо вызвать конструктор суперкласса, только если вы хотите передать аргументы его конструктору. В противном случае вызов конструктора суперкласса не требуется.
Сравните следующие два Stock
методы конструктора. The Stock
класс является подклассом Asset
класс, который требует передачи аргументов его конструктору.
Функция конструктора до версии 7.6
function s = Stock(description,num_shares,share_price) s.NumShares = num_shares; s.SharePrice = share_price; % Construct Asset object a = Asset(description,'stock',share_price*num_shares); % Use the class function to define the stock object s = class(s,'Stock',a);
Напишите то же Stock
конструктор классов, как показано здесь. Определите наследование на classdef
линия и определить конструктор в methods
блок.
Функция конструктора для версии 7.6
classdef Stock < Asset ... methods function s = Stock(description,num_shares,share_price) % Call superclass constructor to pass arguments s = s@Asset(description,'stock',share_price*num_shares); s.NumShares = num_shares; s.SharePrice = share_price; end % End of function end % End of methods block end % End of classdef block
Свойства: Способы использовать свойства
Классы Handle: Сравнение классов Handle и Value
События и прослушиватели: Событие и Концепции прослушивателя
Атрибуты члена класса: Спецификация атрибута
Абстрактные классы: абстрактные классы и члены класса
Динамические свойства: Динамические Свойства - Добавляющие Свойства к Образцу
Возможность подкласса встроенных классов MATLAB: Конструкторы Подкласса Проекта
Пакеты для функций и классов просмотра: Пакеты создают пространства имен. MATLAB не поддерживает пакеты для классов, созданных до MATLAB Version 7.6 (то есть классов, которые не используют classdef
).
JIT/Accelerator поддерживает объекты, заданные только классами, использующими classdef
.
Реализация классов MATLAB Version 7.6 использует другой синтаксис по сравнению с предыдущими релизами. Однако классы, написанные в предыдущих версиях, продолжают работать. Большая часть кода, которую вы используете для реализации методов, вероятно, останется прежней, кроме тех случаев, когда вы используете новые возможности.
В следующих разделах примеры повторной имплементации с использованием последнего синтаксиса. Исходная документация MATLAB Classes and Objects реализовала эти же примеры и обеспечивает сравнение старого и нового синтаксиса.