文档

对象的转换器

为什么实现转换器

您可以将一个类的对象转换为另一个类的对象。转换器方法与它转换的类具有相同的名称,例如字符.可以将转换器方法看作另一个类的重载构造函数方法。转换器接受它自己类的实例,并返回另一个类的对象。

转换器使您能够:

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

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

  • 控制实例在其他上下文中如何解释

假设你定义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返回一个错误。

使用细胞数组用于存储不同类的对象。

相关话题