MATLAB Answers

How to pass a superclass method as a calback?

5 views (last 30 days)
Does anybody know how to pass a superclass function as a calback?
For example a button callback:
btn = uicontrol('Style', 'pushbutton', 'String', 'Example',...
'Position', [20 20 50 20],...
'Callback', @(~, ~)methodFromSuperclass@superclass(obj));
But this one gives an error:
"@" Within a method, a superclass method of the same name is called by saying method@superclass. The left operand of "@" must be the method name.
Thanks, Mario

  0 Comments

Sign in to comment.

Accepted Answer

Mario Koddenbrock
Mario Koddenbrock on 7 Dec 2017
Okay I found the solution:
btn = uicontrol('Style', 'pushbutton', 'String', 'Example',...
'Position', [20 20 50 20],...
'Callback', @(~, ~)obj.methodFromSuperclass());
if the methodFromSuperclass is not used in the subclass.

  1 Comment

Guillaume
Guillaume on 7 Dec 2017
Yes, the @ syntax is only used
  • in the constructor when you want to call the superclass constructor
  • in a class method when you want to invoke a superclass method that has been overriden in the class.
It is never used by a user of the class. The whole point of inheritance is that all methods from all superclasses appear as normal methods of the derived class, so from a user point of view, either
obj.inheritedmethod() %dot notation
or
inheritedmethod(obj) %functional notation
works.

Sign in to comment.

More Answers (0)

Sign in to answer this question.