MATLAB面向对象系列——Handle class和Value class

MATLAB支持两种类:

  • Handle class
  • Value class
    这两种类的定义和区别如下:

Handle class

一旦采用Handle class创建一个对象,这个对象就是独一无二的。对该对象的复制不能生成副本,只能生成引用。对该引用进行操作就是对该对象进行操作。

Use a handle class when you want to create a reference to the data contained in an object of the class, and do not wnat copies of the object to make copies of the object data.

图像的句柄就是一个典型的Handle class。这里采用figure函数生成的一个句柄对象以说明Handle class的特性:

1
2
3
4
5
6
7
8
% 1.创建一个figure句柄
f = figure;
% 2.引用该句柄
h = f;
% 3.修改引用h中的Position属性<!--more-->
h.Position = [0,0,100,100];
% 4.观察f中相应的属性
f.Position

单步执行完3之后就可以发现第1步创建的窗口跑到了屏幕左下角(Position属性控制figure窗口的位置和大小),并且h和f的Position参数相同,这个结果充分说明了Handle Class的特性

Value class

Value class可以任意复制,复制出来的副本跟原来的对象没有任何关系,是一个独立的对象。

Use value classes to represent entities that do not need to be unique, like numeric values.

同样给出一个例子:

1
2
3
4
5
6
7
8
% 1.创建一个double对象
a = double(3); % a = 3也是可以的
% 2.复制该对象
b = a;
% 3. 修改对象b
b = 4;
% 4. 观察a的变化
a

最后可以发现a = 3,Value class的对象经过复制后互不影响。

参考资料

[1]MATLAB Object-Oriented Programming

0%