类定义中的重载函数
为什么重载函数
类可以重定义MATLAB®函数,通过实现具有相同名称的方法。在定义想要表现得像现有MATLAB类型的专用类型时,重载非常有用。例如,您可以实现关系操作、绘图函数和其他常用的MATLAB函数来处理类的对象。
您还可以通过实现控制这些行为的特定函数来修改默认行为。有关修改默认行为的函数的详细信息,请参见修改默认行为的方法.
实现重载MATLAB功能
类方法可以提供仅在类实例上操作的MATLAB函数的实现。这种限制是可能的,因为MATLAB总是可以识别对象属于哪个类。
MATLAB使用主导参数来确定调用函数的哪个版本。如果主导参数是一个对象,那么MATLAB调用对象类定义的方法(如果存在的话)。
如果类定义了与全局函数同名的方法,则该类对该函数的实现称为过载原始的全局实现。
重载一个MATLAB函数:
定义一个与要重载的函数同名的方法。
确保方法参数列表接受类的对象,MATLAB使用该对象确定调用哪个版本。
执行方法中必要的步骤来实现函数。例如,访问对象属性来操作数据。
通常,重载函数的方法产生的结果与MATLAB函数类似。但是,对于如何实现重载方法没有任何要求。重载方法不需要匹配重载函数的签名。
请注意
MATLAB不支持在同一个类中定万博1manbetx义名称相同但签名不同的多个方法。
重载条命令功能
重载常用函数来处理类的对象是很方便的。例如,假设一个类定义了一个属性,该属性存储您经常绘制的数据。的MyData
类将重写酒吧
函数,并向图形中添加标题:
classdefMyData属性数据结束方法函数obj = MyData(d)如果Nargin > 0 obj。数据= d;结束结束函数bar(obj) y = obj. data;栏(y,“EdgeColor”,“r”);标题(“我的数据图”)结束结束结束
的MyData
酒吧
方法与MATLAB同名酒吧
函数。然而,MyData
酒吧
方法需要MyData
对象作为输入。因为该方法专门用于MyData
对象,它可以从中提取数据数据
属性并创建专门化图形。
使用酒吧
方法,创建一个对象:
Y = rand(1,10);md = MyData(y);
使用对象调用方法:
栏(md)
你也可以使用点表示法:
md.bar
实现MATLAB运营商
为实现新的MATLAB数据类型而设计的类通常定义某些操作符,如加法、减法或等号。
例如,标准的MATLAB加法(+
)不能将两个多项式相加,因为这个操作不是由简单加法定义的。然而,一个多项式
类可以定义自己的+
方法,MATLAB语言调用来执行加法多项式
对象时使用+
符号:
P1 + p2
有关重载操作符的信息,请参见操作符重载.
避免冲突的命名规则
方法、属性和事件的名称限定在类的范围内。因此,为了避免命名冲突,请遵循以下规则:
您可以重用在不相关的类中使用过的名称。
如果成员没有公共或受保护访问权限,则可以在子类中重用名称。然后,这些名称引用完全不同的方法、属性和事件,而不影响超类定义
在一个类中,所有的名称都存在于同一个名称空间中,并且必须是唯一的。一个类不能定义同名的两个方法,一个类也不能定义同名的局部函数。
静态方法的名称不带类前缀。因此,没有类前缀的静态方法名不能匹配任何其他方法的名称。