可变和不可变属性
设置对属性值的访问权限
属性 SetAccess 特性使您能够确定在什么条件下代码可以修改对象属性值。有四个级别的设置访问权限,它们提供不同程度的对象属性值访问权限:
SetAccess = public- 任何有权访问对象的代码都可以设置公共属性值。在修改对象属性时,句柄类和值类的行为存在差异。SetAccess = protected- 只有从类方法或子类方法中执行的代码才能设置属性值。除非类或其任何子类定义了执行此操作的方法,否则您无法更改对象属性的值。SetAccess = private- 只有定义类才能设置属性值。仅当类定义设置了属性的方法时,您才能更改对象属性的值。SetAccess = immutable- 属性值在构造函数中设置。在创建对象后,您无法更改不可变属性的值。作为默认值或在类构造函数中设置属性的值。您不能为不可变属性定义属性 set 方法 (set.)。PropertyName
要了解相关信息,请参阅Properties Containing Objects。
定义不可变属性
在此类定义中,只有 Immute 类构造函数可以设置 CurrentDate 属性的值:
classdef Immute properties (SetAccess = immutable) CurrentDate end methods function obj = Immute obj.CurrentDate = datetime("today"); end end end
a = Immute
a =
Immute with properties:
CurrentDate: 09-Jun-2022