Можно преобразовать объект одного класса к объекту другого класса. Метод конвертера имеет то же имя как класс, который это преобразовывает в, такие как 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 сравнивает класс переменной Правой стороны к классу переменной Левой стороны. Если классы отличаются, MATLAB пытается преобразовать переменную Правой стороны в класс переменной Левой стороны. Чтобы сделать это преобразование, MATLAB сначала ищет метод класса Правой стороны, который имеет то же имя как класс Левой стороны. Такой метод является методом конвертера, который подобен операции преобразования типа на других языках.
Если класс Правой стороны не задает метод, чтобы преобразовать от класса Правой стороны до класса Левой стороны, MATLAB вызывает конструктора класса Левой стороны. передача его переменная Правой стороны.
Например, предположите, что вы делаете следующие присвоения:
A(1) = objA; % Object of class ClassA A(2) = objB; % Object of class ClassB
MATLAB пытается вызвать метод ClassB
по имени ClassA
. Если никакой такой метод конвертера не существует, программное обеспечение MATLAB вызывает конструктора ClassA
, передавая objB
в качестве аргумента. Если конструктор ClassA
не может принять objB
как аргумент, то MATLAB возвращает ошибку.
Используйте массивы cell
, чтобы хранить объекты различных классов.