类的基本目的是定义一个对象,该对象封装数据和对该数据执行的操作。例如,BasicClass
定义一个属性和两个操作该属性中的数据的方法:
价值
—包含存储在类对象中的数值数据的属性
舍入
—将属性值四舍五入到小数点后两位的方法
multiplyBy
—将属性的值乘以指定数字的方法
以下是它的定义BasicClass
:
classdefBasicClass属性价值{mustBeNumeric}结束方法函数r = round([obj. value],2);结束函数r = [obj,n];值]* n;结束结束结束
有关类语法的摘要,请参见classdef
。
要使用类:
将类定义保存在。m
与类同名的文件。
创建一个类的对象。
访问属性来分配数据。
调用方法对数据执行操作。
使用类名创建类的对象:
一个= BasicClass
a = BasicClass与属性:值:[]
最初,属性值为空。
属性赋值价值
使用object变量和属性名前的点属性:
a.Value =π/ 3;
要返回属性值,请使用不带赋值的点符号:
a.Value
ans = 1.0472
有关类属性的信息,请参见类属性。
调用舍入
方法对象一个
:
舍入(a)
ans = 1.0500
将对象作为第一个参数传递给接受多个参数的方法,如对multiplyBy
方法:
multiplyBy (3)
ans = 3.1416
你也可以使用点表示法调用一个方法:
a.multiplyBy (3)
使用点表示法时,没有必要显式地将对象作为参数传递。符号使用点和方法名左边的对象。
有关类方法的信息,请参见定义类方法和函数
类可以定义一个特殊的方法来创建类的对象,称为构造函数。构造函数方法使您能够向构造函数传递参数,您可以将参数作为属性值分配。的BasicClass
价值
属性限制其可能的值mustBeNumeric
函数。
类的构造函数BasicClass
类。调用带有输入参数的构造函数时,将其赋值给价值
财产。如果调用构造函数时没有输入参数,则价值
属性的默认值为empty ([]
)。
方法function obj = BasicClass(val) if nargin == 1 obj。值= val;结束结束结束
通过将这个构造函数添加到类定义中,您可以创建一个对象并在一个步骤中设置属性值:
一个= BasicClass(π/ 3)
值:1.0472
构造函数可以执行与创建类对象相关的其他操作。
有关构造函数的信息,请参见类的构造函数方法
MATLAB®使您能够向量化操作。例如,您可以向向量添加一个数字:
[1 2 3] + 2
Ans = 3 4 5
MATLAB将数字相加2
指向数组中的每个元素(1 2 3)
。要向量化算术运算符方法,请将obj。价值
在括号中的属性引用。
(obj。价值] + 2
此语法使该方法能够使用对象数组。例如,使用索引赋值创建一个对象数组。
obj (1) = BasicClass (2.7984);obj (2) = BasicClass (sin(π/ 3));obj (3) = BasicClass (7);
然后这个表达式:
(obj。价值] + 2
相当于这个表达式:
(obj(1)。价值obj(2).Value obj(3).Value] + 2
因为舍入
方法进行了向量化,它可以对数组进行操作:
舍入(obj)
Ans = 2.8000 0.8700 7.0000
类可以通过定义一个与现有MATLAB函数同名的方法来实现现有的功能,如加法。例如,假设您想要添加两个BasicClass
对象。的值相加是有意义的价值
每个对象的属性。
这是MATLAB的重载版本+
函数。对象定义加法BasicClass
类,添加属性值:
方法函数R = + (o1,o2) R = [o1。值]+ [o2.Value];结束结束
通过实现一个被调用的方法+
,你可以使用"+
操作符的对象BasicClass
。
一个= BasicClass(π/ 3);b = BasicClass(π/ 4);a + b
ans = 1.8326
通过对plus方法进行向量化,可以对对象数组进行操作。
一个= BasicClass(π/ 3);b = BasicClass(π/ 4);c = BasicClass(π/ 2);Ar = [a b];基于“增大化现实”技术+ c
Ans = 2.6180 2.3562
有关重载函数的信息,请参见类定义中的重载函数。
有关重载操作符的信息,请参见操作符重载。
BasicClass
代码清单这是BasicClass
添加本主题中讨论的功能后的定义:
classdefBasicClass属性价值{mustBeNumeric}结束方法函数obj = BasicClass (val)如果Nargin == 1 obj。值= val;结束结束函数r = round([obj. value],2);结束函数r = [obj,n];值]* n;结束函数R = + (o1,o2) R = [o1。值]+ [o2.Value];结束结束结束