基本的matlab类方法

时间:2012-08-23 11:48:53

标签: class matlab

  

可能重复:
  How to modify properties of a Matlab Object

我正在尝试将我的C#代码转换为Matlab,在Matlab中我决定使用OOP(我没有使用过Matlab)来处理我的C#代码的复杂性。

查看tutorial,我想出了以下代码:

classdef Cat
    properties
        meowCount = 0; 
    end
    methods 
        function Meow(C)
            disp('meowww'); 
            C.meowCount = C.meowCount + 1;
        end
    end    
end

结果:

>> c = Cat();
>> c.Meow();
meowww
>> c

c = 

  Cat

  Properties:
     meowCount: 0

  Methods

因此,meowCount不会改变。有什么问题?

1 个答案:

答案 0 :(得分:7)

我发现了一些问题:

  • 你没有构造函数
  • 您不是从handle基类
  • 派生的

构造函数不是绝对必要的,但是当你真正想要开始开发更大的类时,它非常有用。它用于初始化obj对象,该对象被传递给每个方法。它与Python的self或C ++的this非常相似。

所以,你纠正的课程:

classdef Cat < handle

    properties
        meowCount = 0; 
    end

    methods 

        function obj = Cat()
            % all initializations, calls to base class, etc. here,
        end

        function Meow(obj)
            disp('meowww'); 
            obj.meowCount = obj.meowCount + 1;
        end
    end    
end

示范:

>> C = Cat;
>> C.Meow; 
meowww
>> C.meowCount
1