前面总结了使用类的时候类的默认优先级,接下来总结练习一下指定类的优先级。
把之前用过的代码修改如下:
classA.m
classdef classA
properties
a;
end
methods
function obj = classA(value)
obj.a = value;
end
function MyMethod(obj,oj_classB)
disp('The MyMethod of classA is called!');
end
end
end
classB.m
classdef (InferiorClasses = {?classA}) classB
properties
b;
end
methods
function obj = classB(value)
obj.b = value;
end
function MyMethod(obj,obj_classB)
disp('The MyMethod of classB is called!');
end
end
end
利用创建的两个类进行操作,记录如下:
>> obj_classA = classA(3)
obj_classA =
classA withproperties:
a: 3
>> obj_classB = classB(4)
obj_classB =
classB withproperties:
b: 4
>> MyMethod(obj_classA,obj_classB)
The MyMethod of classB is called!
>> MyMethod(obj_classB,obj_classA)
The MyMethod of classB is called!
与之前使用默认的优先级相比,执行结果不同。这次,不管方法中传入参数如何改变,最终方法都调用了classB的方法。这说明了classB的优先级要高于classA的优先级。
正常来说,在指定低级优先级的列表中,类的优先级也是由左到右依次递减。总体看来,这还是遵循“先入为主”的原则。