How to set object property to Abstract class
24 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 28 Juil 2020
Réponse apportée : Jim Svensson
le 25 Août 2021
I am getting errors when I try to set an object property type to an Abstract class "matlab.mixin.Heterogeneous" as below:
classdef demoClass
properties
TestProperty matlab.mixin.Heterogeneous
end
methods
function obj = demoClass
% constructor that does not affect the property
end
end
end
The error I get is
>> demoClass
Error defining property 'TestProperty' of class 'demoClass'. Class matlab.mixin.Heterogeneous is abstract. Specify a default value for property TestProperty.
Réponse acceptée
MathWorks Support Team
le 28 Juil 2020
To specify an Abstract class as a property for a MATLAB class, you must also specify a default value for the property which is a class that is derived from the abstract class you specified.
The code below demonstrates how the code you provided might be modified to accomplish this workflow.
classdef demoClass
properties
TestProperty matlab.mixin.Heterogeneous = rootClass
end
methods
function obj = demoClass
% constructor that does not affect the property
end
end
end
classdef rootClass < matlab.mixin.Heterogeneous
methods
function obj = rootClass
end
end
end
And now you should be able to instantiate an instance of "demoClass":
>> demoClass
ans =
demoClass with properties
TestProperty: [1×1 rootClass]
0 commentaires
Plus de réponses (1)
Jim Svensson
le 25 Août 2021
It is stupid Matlab language design. It should be normal to define a property to be an abstract class type. As long as it is empty (array with 0 elements) it is not a problem, and then only assign concrete sub-classes to the property.
0 commentaires
Voir également
Catégories
En savoir plus sur Software Development Tools dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!