MATLAB: Is is possible to control the order of inherited class properties

classMATLABoopproperties

Consider two simple classes, where one inherits from the other:
First class:
classdef Example_Class_1 < handle
properties
Property1
Property2
end
end
Second class:
classdef Example_Class_2 < Example_Class_1
properties
Property3
end
end
Now, if I create an Example_Class_2 object, its properties are listed as follows:
Example_Class_2
ans =
Example_Class_2 with properties:
Property3: []
Property1: []
Property2: []
Is there some alternative syntax I can use when defining Example_Class_2, such that Property1 and Property 2 (the inherited properties) appear before Property3 when an Example_Class_2 object is created?

Best Answer

Following the advice of William Warriner, here is what can be done. Change Example_Class_2 as follows:
classdef Example_Class_2 < Example_Class_1 & matlab.mixin.CustomDisplay
properties
Property3
end
methods (Hidden)
function value = properties( obj )
propList = sort( builtin("properties", obj) );
if nargout == 0
disp(propList);
else
value = propList;
end
end
function value = fieldnames( obj )
value = sort( builtin( "fieldnames", obj ) );
end
end
methods (Access = protected)
function group = getPropertyGroups( obj )
props = properties( obj );
group = matlab.mixin.util.PropertyGroup( props );
end
end
end
Now, properties are listed in alphabetical order, both when displayed on the command line, and when returned as a cell array (with e.g. propList = properties(Example_Class_2))
Of course, you don't have to use sort() to re-order the property list in the properties method. In my case, I needed a different ordering and just used
propList = builtin("properties", obj);
propList = propList([<my custom indices order>]);