MATLAB Answers

Is the Abstract keyword needed to make a method abstract?

6 views (last 30 days)
per isakson
per isakson on 17 Sep 2021
Commented: per isakson on 18 Sep 2021
Is this correct Matlab syntax
classdef MyClass
methods
outarg = my_method( this, inarg );
end
end
R2018b accepts it. Assuming this class definition is correct
  • is MyClass abstract?
  • is the method, my_method, abstract?
meta.class reports that .Abstract==false for both.
  1 Comment
per isakson
per isakson on 18 Sep 2021
Addendum: "Run in R2021a" can't execute these lines in the question, since the class definition causes an error
meta_class = meta.class.fromName( 'MyClass' );
meta_class.Abstract
ans = logical
0
meta_class.MethodList(1).Name
ans = 'my_method'
meta_class.MethodList(1).Abstract
ans = logical
0

Sign in to comment.

Accepted Answer

Steven Lord
Steven Lord on 18 Sep 2021
That is valid syntax, but not for making my_method an Abstract method. What you've written tells MATLAB that my_method is implemented in a separate file, not in the classdef file for MyClass.
See this documentation page for more information on how to declare a method as Abstract.
classdef MyClass
methods (Abstract)
outarg = my_method( this, inarg );
end
end
  1 Comment
per isakson
per isakson on 18 Sep 2021
@Steven Lord, thank you for the answer. I had forgotten (I never use separate files).
However, that means that MyClass.m needs to be in a class folder named, @MyClass.

Sign in to comment.

More Answers (0)

Products


Release

R2018b

Community Treasure Hunt

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

Start Hunting!