主要内容

类定义中的重载函数

为什么重载函数

类可以重定义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

有关重载操作符的信息,请参见操作符重载

避免冲突的命名规则

方法、属性和事件的名称限定在类的范围内。因此,为了避免命名冲突,请遵循以下规则:

  • 您可以重用在不相关的类中使用过的名称。

  • 如果成员没有公共或受保护访问权限,则可以在子类中重用名称。然后,这些名称引用完全不同的方法、属性和事件,而不影响超类定义

  • 在一个类中,所有的名称都存在于同一个名称空间中,并且必须是唯一的。一个类不能定义同名的两个方法,一个类也不能定义同名的局部函数。

  • 静态方法的名称不带类前缀。因此,没有类前缀的静态方法名不能匹配任何其他方法的名称。

相关的话题