在本节中给出的材料构建在以下各节中提供的信息的理解。
MATLAB®遵循这些规则拼接对象:
MATLAB总是试图将所有对象转换为统治阶级。
用户定义的类优先于内置类相似双
。
如果有任何两个物体之间没有限定支配关系,则最左边的对象占优势(见优先级)。
当串联或下标分配期间转换为主导类,MATLAB搜索该是相同的名称作为主要类转化方法中的非主导类。如果这样的转换方法存在,MATLAB调用它。如果转换方法不存在,MATLAB调用非主导对象上的主导类的构造函数。
这是可能的统治阶级定义horzcat
,vertcat
, 要么猫
该修改默认连结处理方法。
MATLAB没有对象转换为通用超除非这些对象是异构的层次结构的一部分。欲了解更多信息,请参阅异构设计类层次结构。
级联联合对象成阵列:
进制= [OBJ1,OBJ2,OBJ3,...,objn];
的大小元
为1行n。
进制= [OBJ1; OBJ2; OBJ3;...; objn];
的大小元
是n乘1。
类中的阵列是作为类的对象的被级联的相同。串联不同类的对象是可能的,如果MATLAB可以将对象转换为统治阶级。MATLAB尝试不同的对象转换:
调用劣对象转换器的方法,如果存在的话。
传递一个劣质对象统治阶级构造函数来创建统治阶级的对象。
如果下对象的转换成功,MATLAB返回一个数组,它是主要的类的。如果转换是不可能的,MATLAB返回错误。
MATLAB调用的主导类的构造函数的劣类的对象转换为统治阶级。MATLAB传递劣对象给构造作为参数。如果类设计使主导类构造为接受劣类作为输入自变量的对象,那么级联是可能的,而不执行单独的转换器的方法。
如果构造简单地分配此参数的属性,其结果是占主导地位的类的对象存储在一个属性较差类的一个对象。如果这种分配不是一个理想的结果,然后确保类的构造函数包含足够的错误检查。
例如,考虑类ColorClass
和两个子类,RGBColor
和HSVColor
:
classdefColorClass性能颜色结束结束
班上RGBColor
继承了颜色
物业ColorClass
。RGBColor
存储定义为红色,绿色的三元素向量的色彩值,和蓝(RGB)值。构造函数不限制输入参数的值。据该值直接分配给颜色
属性。
classdefRGBColor方法功能OBJ = RGBColor(RGB)如果nargin> 0 obj.Color = RGB;结束结束结束结束
班上HSVColor
也继承了颜色
物业ColorClass
。HSVColor
存储定义为色相,饱和度,亮度值(HSV)值的三元素向量的颜色值。
classdefHSVColor方法功能OBJ = HSVColor(HSV)如果nargin> 0 obj.Color = HSV;结束结束结束结束
各创建类的实例,并将它们连接成一个阵列。该RGBColor
目的是占主导地位的,因为它是最左边的对象并且既不使用类定义了支配关系:
crgb = RGBColor([1 0 0]);chsv = HSVColor([0 1 1]);进制= [crgb,chsv];类(元)
ANS = RGBColor
您可以将这些对象组合成一个阵列,因为MATLAB可以通过类的劣质对象HSVColor
占主导地位的类的构造函数。但是,请注意,颜色
第二财产RGBColor
阵列中的对象实际上包含一个HSVColor
对象,而不是一个RGB
颜色规格:
元(2)。颜色
ANS = HSVColor与特性:颜色:[0 1 1]
通过避免这种不良行为:
实施转换方法
执行参数检查类构造函数属性指派值之前
如果你的类设计需要对象转换,为实现这一目的转换器的方法。
该ColorClass
类定义了转换器的方法RGBColor
和HSVColor
对象:
classdefColorClass性能颜色结束方法功能rgbObj = RGBColor(OBJ)如果ISA(OBJ,'HSVColor')rgbObj = RGBColor(hsv2rgb(obj.Color));结束结束功能hsvObj = HSVColor(OBJ)如果ISA(OBJ,'RGBColor')hsvObj = HSVColor(rgb2hsv(obj.Color));结束结束结束结束
创建数组RGBColor
和HSVColor
修订后的超类对象:
crgb = RGBColor([1 0 0]);chsv = HSVColor([0 1 1]);进制= [crgb,chsv];类(元)
ANS = RGBColor
MATLAB呼吁该转换器的方法HSVColor
对象,其从超类继承。第二阵列元件现在是一个RGBColor
与分配给一个RGB彩色规范对象颜色
属性:
元(2)
ANS = RGBColor与特性:颜色:[1 0 0]
元(2)。颜色
ANS = 1 0 0
如果最左边的对象是类的HSVColor
中,阵列元
是类的也HSVColor
和MATLAB转换颜色
属性数据到HSV色规范。
进制= [chsv crgb]
元= 1x2的HSVColor特性:颜色
元(2)。颜色
ANS = 0 1 1
限定在超类中的转换器的方法,并在子类构造增加更好的参数检查产生更可预测的结果。这里是RGBColor
类的构造函数与参数检查:
classdefRGBColor方法功能OBJ = RGBColor(RGB)如果nargin == 0 RGB = [0 0 0];其他如果〜(ISA(RGB,'双')...&&大小(RGB,2)== 3...&&最大值(RGB)<= 1 &&分钟(RGB)> = 0)错误(“指定颜色的RGB值”)结束结束obj.Color = RGB;结束结束结束
您的应用程序可能需要额外的错误检查和其它编码技术。在这些例子中的类仅旨在展示概念。