Lisning for a subclass property
1 view (last 30 days)
Show older comments
I have a main class and a subclass and I would like to listen for the change in any of the subclass properties. In other term when the property in the subclass changes, I would like to trigger a function in the main class. I coded it this way but nothing is happening. thanks for your help.
mainclass =
classdef class_mainclass < handle
properties (SetAccess = private)
end
properties (SetObservable)
subclass;
end
events
end
methods
function obj = class_mainclass
obj.subclass = class_subclass;
addlistener(obj,'subclass','PreSet',...
@PushButton.do);
end
function do(src,evt)
display('did');
end
end % methods
end % classdef
and a subclass
classdef class_subclass < handle
properties (SetAccess = private)
end
properties (SetAccess = public)
A=1;
end
events
end
methods
function obj = class_subclass
end
function obj = addA(obj)
obj.A=obj.A+1;
end
end % methods
end % classdef
>> m = class_mainclass;
>> m.subclass.addA
0 Comments
Accepted Answer
Guillaume
on 24 Jun 2015
Edited: Guillaume
on 24 Jun 2015
First, a matter of terminology. Your subclass is not a subclass at all. A subclass derives from the main class. In matlab OOP this implies the following definition:
classdef subclass < mainclass
Your subclass is just a standard class that happens to be a member of your main class. It would be very odd for a main class to instantiate a subclass (except through factory methods), anyway.
In any case, If you want to listen to the property changes of your member class, it is these properties you need to set observable and these properties you need to attach a listener. At present, the only thing you'll detect is if your subclass member is changed to a new instance. That is you'll detect this:
m.subclass = class_subclass; %assign a new class_subclass to the member property of m
More Answers (0)
See Also
Categories
Find more on Construct and Work with Object Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!