MATLAB: How to reference a super class of a superclass object

event.proplistenerobject oriented programmingobject-orientedsuperclass

I have a subclass of a superclass of a superclass. The two levels up superclass owns a property that has a set method defined. I'd like to have the subclass also act on the setting of the super-superclass property. I thought I'd use a property listener in the subclass that was listening to the super-superclass's property. The problem I'm having is syntax. What's the syntax for event.proplistener? How do I reference a super-super class instance or object? Or, do I need to?
I've tried: Obj.RecordNameListener = … event.proplistener(Obj,'RecordName','PostSet',@Obj.OnRecordNameChanged);
Where Obj is the subclass object reference. But i really shouldn't be listening to myself I should be listening to my super-super class:
Obj@FirstLevelSuperClass@SecondLevelSuperClass doesn't work
Is this a good approach?
Thanks in advance.

Best Answer

I find that using the predefined set methods (i.e. function set.Foo(obj,value)) are convenient in simple scenarios, but for reasonably complex cases like this it is just easier to define your own setter methods. Then you'd call the method to set the property instead of accessing the property directly. Here's a simple example:
classdef SuperSuper < handle
properties
TheProperty
end
methods
function setTheProperty(self, val)
% Notice no dot in the function name
disp('SuperSuper setter!');
self.TheProperty = val;
end
end
end
classdef Super < SuperSuper
end
classdef Base < Super
methods
function setTheProperty(self, val)
setTheProperty@SuperSuper(self, val);
disp('Base setter!');
self.TheProperty = val;
end
end
end
Usage:
>> B = Base;
>> B.setTheProperty(5)
SuperSuper setter!
Base setter!
>> B.TheProperty
ans =
5
>>