主要内容

对象转换器

为什么要实现转换器

您可以将一个类的对象转换为另一类的对象。转换器方法的名称与该类转换的类别相同,例如charor双倍的。将转换器方法视为另一类的超载构造方法。转换器使用其自己类的实例,并返回另一个类别的对象。

转换器使您可以:

  • 使用为另一类定义的方法

  • 确保涉及混合类类型对象的表达式正确执行

  • 控制在其他情况下如何解释实例

假设您定义了多项式班级。如果您创建一个双倍的方法多项式类,您可以使用它来调用其他需要类型输入的功能双倍的

p =多项式(...);dp = double(p);根(DP)

p是多项式对象,双倍的是一种方法多项式班级和是标准MATLAB®其输入参数的函数是多项式的系数。

包装类的转换器

软件包中定义的类可以具有分隔为“名称”列表的名称。姓是一个类,前面的名称是软件包。使用方法名称中的软件包预选赛命名转换方法。例如,一种转换方法来转换对象我的课到对象pkgname.pkgclass类使用此方法名称:

ClassDef我的课...方法功能objpkgclass = pkgname.pkgclass(objmyClass)...结尾结尾结尾

您无法定义转换器方法,该方法在单独文件中使用名称中的点。定义包装级转换器ClassDeffile.

转换器和订阅作业

当您制作订阅分配声明时,例如:

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

Related Topics