您可以将一个类的对象转换为另一个类的对象。转换器方法与它转换的类具有相同的名称,例如字符
或双
.可以将转换器方法看作另一个类的重载构造函数方法。转换器接受它自己类的实例,并返回另一个类的对象。
转换器使您能够:
使用为另一个类定义的方法
确保包含混合类类型对象的表达式正确执行
控制实例在其他上下文中如何解释
假设你定义a多项式
类。如果你创建一个双
方法多项式
类,您可以使用它来调用其他需要类型输入的函数双
.
p =多项式(...);dp =双(p);根(dp)
p
是一个多项式对象,双
是一种方法吗多项式
类,根
是一个标准的MATLAB®输入参数为多项式系数的函数。
包中定义的类可以有一个点分隔的名称列表。最后一个名字是类,前面的名字是包。使用方法名称中的包限定符来命名转换方法。例如,转换对象的转换方法MyClass
对象的PkgName。PkgClass
类使用这个方法名:
classdefMyClass...方法函数objPkgClass = PkgName.PkgClass (objMyclass)...结束结束结束
不能在单独的文件中定义名称中使用点的转换器方法。类中定义包类转换器classdef
文件。
当你做一个下标的赋值语句:
(1) = myobj;
MATLAB将右侧变量的类与左侧变量的类进行比较。如果类不同,MATLAB尝试将右侧变量转换为左侧变量的类。为了完成这个转换,MATLAB首先搜索与左侧类同名的右侧类的方法。这样的方法是一个转换器方法,它类似于其他语言中的类型转换操作。
如果Right-Side类没有定义从Right-Side类转换到Left-Side类的方法,MATLAB调用Left-Side类构造函数。将右侧变量传递给它。
例如,假设你做了以下作业:
(1) = objA;类的对象类a(2) = objB;ClassB类的对象
MATLAB试图调用的一个方法ClassB
命名ClassA
.如果不存在这样的转换方法,MATLAB软件调用ClassA
构造函数,通过objB
作为参数。如果ClassA
构造函数不能接受objB
作为参数,则MATLAB返回一个错误。
使用细胞
数组用于存储不同类的对象。