文档

重载图形函数中的主要参数

图形对象优先

MATLAB®属性定义的类的对象具有相同的优先级classdef语法。如果你想实现一个接受图形对象作为它的第一个参数的方法(例如,一个坐标轴句柄),但是要分派给你的类的方法,定义MATLAB图形类低于你的类。

占主导地位的观点

当计算包含多个类的对象的表达式时,MATLAB使用主要参数来确定调用哪个方法或函数。

下面是MATLAB如何调度响应函数调用:

  • 根据论点的类别确定主要论点。

  • 如果有一个主导参数,调用主导类的方法。

  • 如果参数具有相同的优先级,则使用最左边的参数作为主导参数。

  • 如果主参数的类没有定义一个带有被调用函数名称的方法,则使用该名称调用路径上的第一个函数。

定义类优先

属性指定MATLAB类的相对优先级InferiorClasses类属性。下面是基本的语法:

classdef(InferiorClasses = {?class1,?类别2})类名称

下面的定义TemperatureData类实现的专门化版本情节绘制温度数据图。类情节方法支持可变数金宝app量的输入参数,以允许坐标轴句柄作为第一个参数:

情节(obj)情节(ax, obj)

obj的实例是TemperatureData类和斧头是一个句柄。

MATLAB调用情节方法,因为TemperatureData类指定了matlab.graphics.axis.Axes劣质的。

classdef(inferorclasses = {?matlab.graphics.axis.Axes}属性时间温度结束方法函数obj. log (x,y) = "温度数据"时间= x;obj。温度= y;结束函数情节(变长度输入宗量)如果Nargin == 1 obj = varargin{1};情节(obj.Time obj.Temperature)elseifNargin == 2 ax = varargin{1};obj =变长度输入宗量{2};情节(ax, obj.Time, obj.Temperature)elseifNargin > 2 ax = varargin{1};obj =变长度输入宗量{2};情节(ax, obj.Time, obj.Temperature变长度输入宗量{3:结束})结束datetick (“x”)包含(“时间”) ylabel (“温度”结束结束结束

下面是对情节分派到TemperatureData情节方法,而不是内置方法情节功能,因为TemperatureData对象优于轴对象。

x = 1:10;y =兰德(10)* 100;ax =轴;td = TemperatureData (x, y);情节(ax, td)

调用下级类方法

当你声明一个类低于你的类,并且两个类定义了一个同名的方法时,MATLAB会分派给你的类方法,而不考虑参数顺序。

假设TemperatureData类定义了一个方法。属性的对象TemperatureData类的用户数据轴对象的属性:

td = TemperatureData (x, y);集(gca),“用户数据”td)

结果是调用TemperatureData方法。MATLAB不调用内置的函数。

支持使金宝app用a函数的子类,实现方法调用内置的函数的第一个参数是下类的对象时。

函数集(变长度输入宗量)如果isa(变长度输入宗量{1},“matlab.graphics.axis.Axes”)内装式(“设置”变长度输入宗量{}):其他的...结束

相关的话题