对象转换器
为什么要实现转换器
您可以将一个类的对象转换为另一类的对象。转换器方法的名称与该类转换的类别相同,例如char
or双倍的
。将转换器方法视为另一类的超载构造方法。转换器使用其自己类的实例,并返回另一个类别的对象。
转换器使您可以:
使用为另一类定义的方法
确保涉及混合类类型对象的表达式正确执行
控制在其他情况下如何解释实例
假设您定义了多项式
班级。如果您创建一个双倍的
方法多项式
类,您可以使用它来调用其他需要类型输入的功能双倍的
。
p =多项式(...);dp = double(p);根(DP)
p
是多项式对象,双倍的
是一种方法多项式
班级和根
是标准MATLAB®其输入参数的函数是多项式的系数。
包装类的转换器
软件包中定义的类可以具有分隔为“名称”列表的名称。姓是一个类,前面的名称是软件包。使用方法名称中的软件包预选赛命名转换方法。例如,一种转换方法来转换对象我的课
到对象pkgname.pkgclass
类使用此方法名称:
ClassDef我的课...方法功能objpkgclass = pkgname.pkgclass(objmyClass)...结尾结尾结尾
您无法定义转换器方法,该方法在单独文件中使用名称中的点。定义包装级转换器ClassDef
file.
转换器和订阅作业
当您制作订阅分配声明时,例如:
a(1)= myobj;
MATLAB比较右variab的类le to the class of the Left-Side variable. If the classes are different, MATLAB attempts to convert the Right-Side variable to the class of the Left-Side variable. To do this conversion, MATLAB first searches for a method of the Right-Side class that has the same name as the Left-Side class. Such a method is a converter method, which is similar to a typecast operation in other languages.
如果右侧类未定义从右侧类转换为左侧类的方法,则MATLAB调用左侧类构造函数。将其传递给右侧变量。
例如,假设您进行以下作业:
a(1)= obja;班级课程的%对象a(2)= objb;ClassB的%对象
MATLAB试图调用一种方法classB
命名Classa
。如果不存在这样的转换器方法,则MATLAB软件调用Classa
构造函数,传递OBJB
作为论点。如果是Classa
构造函数无法接受OBJB
作为参数,MATLAB返回错误。
利用细胞
存储不同类的对象的数组。
异质阵列的转换器
为了支金宝app持使用不属于异质层次结构的对象的异质数组的形成,请实现convertobject
根超类中的方法。这convertobject
方法必须将非成员对象转换为异质层次结构的有效成员。
有关实施的详细信息convertobject
方法,请参阅MATLAB.MIXIN.HETROCENOUS
。