How do properties work in Object Oriented MATLAB?

Using a Value (Vanilla) Class

When using a value class you need to tell Matlab to store a modified copy of the object to save the changes in the property value. So,

>> a=testprop
>> a.Request(5); % will NOT change the value of a.numRequests.
5

>> a.Request(5) 
5

>> a.numRequests
ans = 
       0

>> a=a.Request; % However, this will work but as you it makes a copy of variable, a.
5

>> a=a.Request; 
5

>> a.numRequests
ans =
       2

As Kamran notes, this requires changing the definition of function Request to be

function this = Request(this, val)`

Using a Handle Class

If you inherit from the handle class, that is

classdef testprop < handle

then you can write,

>> a.Request(5);
>> a.Request(5);
>> a.numRequests
ans = 
       2

Note that this changes the behavior of the objects, see the documentation to learn the difference between a value class and a handle class.

Leave a Comment