MATLAB 面向对象编程(十一)成员方法共享Static和属性共享constant、persistent

无需关注,查看原文

  1. 类的成员方法
    静态成员方法(Static)也叫做类方法,在前面的loadobj方法中有涉及,它不需要具体的对象就可以调用。
classdef Base1 < handle
    properties
        x
    end
    methods
        function obj = Base1()
            disp('Base1');
        end
    end
    methods(Static)
        function foo()
            disp('Static function')
        end
    end
end

在命令行里面输入Base1.foo(),直接通过类名就可以调用,可以得到
在这里插入图片描述

同样也可以用对象来调用
在这里插入图片描述
可以发现静态方法和普通方法一个重要的不同就是,静态方法的输入参数中没有obj作为对象输入,同样这也说明了静态方法不能调用普通方法也不能访问属性,否则就没有必要定义为静态方法。

  1. 共享属性
    共享属性可以分为两类,一类是常量,一类是变量。、

常量: 对于常量可以通过Constant实现共享。

classdef Base1 
    properties (Constant)
        x = rand(100,100);
    end
    methods
        function obj = Base1()
            disp('Base1');
        end
    end
    methods(Static)
        function foo()
            disp('Static function')
        end
    end
end
classdef Base2 
    properties
        x = rand(100,100);   
    end
    methods
        function obj = Base2()
            disp('Base1');
        end
    end
    methods(Static)
        function foo()
            disp('Static function')
        end
    end
end

我们可以对比上面两种方法,
在这里插入图片描述
说明x并没有算入A的内存中,我们再声明一个Base1对象,观察x是否相同。
在这里插入图片描述
说明所有Base1对象共享相同的x属性。

变量: 变量共享可以使用persistent实现共享。

classdef Sub 
    properties 
       z
    end
    methods
        function obj = Sub()
             persistent count ;
             if isempty(count)
                 count = 1;
             else
                 count = count + 1;
             end
           count
        end
    end
end

在这里插入图片描述
可以看出count的值是跟随着增加的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肆拾伍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值