MATLAB 面向对象中函数和属性

在 MATLAB 中,面向对象编程(Object-Oriented Programming, OOP)允许定义类(class),这些类包含属性(attributes)方法(methods)


1. 属性(Properties)

属性是类中用于存储数据的变量,它们定义了对象的状态或特征。

属性的定义

使用 properties 代码块定义属性。例如:

classdef MyClass
    properties
        Property1 % 公有属性
        Property2 = 10 % 设置默认值
    end
end
属性修饰符

可以通过修饰符控制属性的访问和行为:

  • Access 修饰符

    • public(默认):属性可在类的任何地方访问。
    • protected:只能在类及其子类中访问。
    • private:只能在定义它的类中访问。
  • 其他修饰符

    • Constant:定义常量属性,值不能更改。
    • GetAccess / SetAccess:分别控制属性的读取和写入权限。
    • Dependent:属性的值由计算得来,不直接存储。
    • Transient:不随对象保存而保存。

示例:

classdef MyClass
    properties (Access = private)
        PrivateProperty
    end
    properties (SetAccess = private)
        ReadOnlyProperty
    end
    properties (Constant)
        PiValue = 3.14159
    end
end

2. 方法(Methods)

方法是类中用于操作数据或实现功能的函数。

方法的定义

使用 methods 代码块定义方法。例如:

classdef MyClass
    methods
        function obj = MyClass() % 构造函数
            disp('Object created');
        end

        function result = addNumbers(obj, a, b) % 普通方法
            result = a + b;
        end
    end
end
方法修饰符
  • Access 修饰符

    • public(默认):方法可被任何代码调用。
    • protected:只能在类及其子类中调用。
    • private:只能在定义它的类中调用。
  • Static 方法
    静态方法与类的实例无关,可以直接通过类名调用。

    methods (Static)
        function result = multiply(a, b)
            result = a * b;
        end
    end
    
  • Abstract 方法
    抽象方法在父类中定义,但没有实现,需要子类实现。

    methods (Abstract)
        result = abstractMethod(obj, input)
    end
    

3. 类的基本结构

以下是一个完整的 MATLAB 类的示例:

classdef MyClass
    properties
        Property1
        Property2 = 10
    end

    properties (Access = private)
        PrivateProperty
    end

    methods
        % 构造函数
        function obj = MyClass(val)
            if nargin > 0
                obj.Property1 = val;
            end
        end

        % 普通方法
        function result = add(obj, a, b)
            result = a + b;
        end

        % 静态方法
        function result = staticExample(~)
            disp('This is a static-like method');
        end
    end
end

4. 类中的属性与方法访问

  • 创建对象:

    obj = MyClass(5);
    
  • 访问属性:

    obj.Property1 = 20;
    disp(obj.Property2);
    
  • 调用方法:

    result = obj.add(3, 4);
    
  • 静态方法调用:

    result = MyClass.multiply(3, 5);
    

MATLAB 的面向对象功能可以帮助组织复杂程序,特别适用于需要对数据和行为进行抽象建模的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值