Is the Abstract keyword needed to make a method abstract?

2 visualizaciones (últimos 30 días)
per isakson
per isakson el 17 de Sept. de 2021
Comentada: per isakson el 18 de Sept. de 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 comentario
per isakson
per isakson el 18 de Sept. de 2021
Editada: per isakson el 18 de Sept. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Steven Lord
Steven Lord el 18 de Sept. de 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 comentario
per isakson
per isakson el 18 de Sept. de 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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Software Development Tools en Help Center y File Exchange.

Productos


Versión

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by