MATLAB面向对象编程中类的默认优先级

来源:互联网 发布:wps表格查找重复数据 编辑:程序博客网 时间:2024/04/29 03:11

      通过简单的测试,我自己总结出来的默认规则是:在MATLAB面向对象编程的类使用中,如果出现同名的方法,那么在调用的过程中MATLAB会采用先入为主的方式来判断其优先级。

      通过一个例子简单示范说明,首先定义两个类classA和classB,具体的代码如下:

classA:

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

classdef 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

 

   再MATLAB的命令窗中进行测试操作,具体如下:

>> 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 classA is called!

>> MyMethod(obj_classB,obj_classA)

The MyMethod of classB is called!

      通过上面的操作记录可以看出,当classA首先被传入的时候,方法最终采用了classA的方法。此时,classA具有高出classB的优先级。但是,反过来,先传入classB的时候情况则恰恰想法。这样,在结论上我们就可以给开篇的结论再加一条:在方法调用过程中,在没有指明优先级的情况下,优先级根据函数参数传入的顺序从左到右依次降低。