How to pass a superclass method as a calback?

5 ビュー (過去 30 日間)
Mario Koddenbrock
Mario Koddenbrock 2017 年 12 月 7 日
コメント済み: Guillaume 2017 年 12 月 7 日
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

採用された回答

Mario Koddenbrock
Mario Koddenbrock 2017 年 12 月 7 日
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 件のコメント
Guillaume
Guillaume 2017 年 12 月 7 日
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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeInteractive Control and Callbacks についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by