Можно преобразовать объект одного класса к объекту другого класса. Метод конвертера имеет то же имя как класс, который это преобразует в, такой как char
или double
. Думайте о методе конвертера как о перегруженном методе конструктора другого класса. Конвертер берет экземпляр своего собственного класса и возвращает объект различного класса.
Конвертеры включают вам к:
Используйте методы, заданные для другого класса
Убедитесь, что выражения включающие объекты смешанных типов классов выполняются правильно
Управляйте, как экземпляры интерпретированы в других контекстах
Предположим, что вы задаете polynomial
класс. Если вы создаете double
метод для polynomial
класс, можно использовать его, чтобы вызвать другие функции, которые требуют входных параметров типа double
.
p = polynomial(...); dp = double(p); roots(dp)
p
полиномиальный объект, double
метод polynomial
класс и roots
стандартная функция MATLAB®, входные параметры которой являются коэффициентами полинома.
Классы, заданные в пакетах, могут иметь имена, которые являются разделенным от точки списком имен. Фамилия является классом, и предыдущие имена являются пакетами. Назовите методы преобразования с помощью спецификаторов пакета в именах методов. Например, метод преобразования, чтобы преобразовать объекты MyClass
к объектам PkgName.PkgClass
класс использует это имя метода:
classdef MyClass ... methods function objPkgClass = PkgName.PkgClass(objMyclass) ... end end end
Вы не можете задать метод конвертера, который использует точки на имя в отдельном файле. Задайте конвертеры класса пакета в classdef
файл.
Когда вы делаете преобразованный в нижний индекс оператор присваивания как:
A(1) = myobj;
MATLAB сравнивает класс переменной Right-Side к классу переменной Left-Side. Если классы отличаются, MATLAB пытается преобразовать переменную Right-Side в класс переменной Left-Side. Чтобы сделать это преобразование, MATLAB сначала ищет метод класса Правой стороны, который имеет то же имя как класс Левой стороны. Такой метод является методом конвертера, который похож на операцию преобразования типа на других языках.
Если класс Правой стороны не задает метод, чтобы преобразовать от класса Правой стороны до класса Левой стороны, MATLAB вызывает конструктора класса Левой стороны. передача его переменная Right-Side.
Например, предположите, что вы делаете следующие присвоения:
A(1) = objA; % Object of class ClassA A(2) = objB; % Object of class ClassB
MATLAB пытается вызвать метод ClassB
названный ClassA
. Если никакой такой метод конвертера не существует, программное обеспечение MATLAB вызывает ClassA
конструктор, передавая objB
в качестве аргумента. Если ClassA
конструктор не может принять objB
в качестве аргумента затем MATLAB возвращает ошибку.
Использование cell
массивы, чтобы хранить объекты различных классов.
Чтобы поддержать формирование объектов использования разнородных массивов, которые не являются частью неоднородной иерархии, реализуйте convertObject
метод в корневом суперклассе. convertObject
метод должен преобразовать объект лица, не являющегося членом какой-либо организации, в допустимый член неоднородной иерархии.
Для получения дополнительной информации при реализации convertObject
метод, смотрите matlab.mixin.Heterogeneous
.