- 類的成員方法
靜態成員方法(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作爲對象輸入,同樣這也說明了靜態方法不能調用普通方法也不能訪問屬性,否則就沒有必要定義爲靜態方法。
- 共享屬性
共享屬性可以分爲兩類,一類是常量,一類是變量。、
常量: 對於常量可以通過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的值是跟隨着增加的。