Is the Abstract keyword needed to make a method abstract?

2 visualizzazioni (ultimi 30 giorni)
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 Commento
per isakson
per isakson il 18 Set 2021
Modificato: per isakson il 18 Set 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

Accedi per commentare.

Risposta accettata

Steven Lord
Steven Lord il 18 Set 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 Commento
per isakson
per isakson il 18 Set 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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Software Development Tools in Help Center e File Exchange

Prodotti


Release

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by