How to pass field values to subclass from superclass?
8 views (last 30 days)
Show older comments
kanuri venkata mohana
on 27 Jul 2020
Answered: per isakson
on 30 Jul 2020
Hi guys,
I would like to pass my propert values of super class to subclass? I could transfer the properties but not the values of it. I am sending you the code that i made. Please tell me how could i correct it.
classdef clWinding
properties
Npcs
Npcp
end
properties (Dependent)
kb
end
methods
function objW = clWinding (Npcs, Npcp)
objW.Npcs = Npcs;
objW.Npcp = Npcp;
end
function kb = get.kb (objW)
kb = objW.Npcs + objW.Npcp;
end
end
end
This is the superclass
classdef clLitz <clWinding
properties
Litz
end
methods
function objLitz = clLitz (Npcs, Npcp, Litz)
objLitz @ clWindingPrimary (Npcs, Npcp);
objLitz.Litz = Litz;
end
end
end
When i did this i could pass the fields but not values of it. Can anyone tell me what mistake i have done and help me to resolve it.
Thnak you
4 Comments
Steven Lord
on 27 Jul 2020
Because your objLitz isa clWinding object (through inheritance) you can ask for the values of the (for example) Npcs property it has because it is a clWinding object.
obj = clLitz(1, 2, 3) % using dummy values
N = obj.Npcs
Accepted Answer
per isakson
on 30 Jul 2020
There are syntax errors in your code. Try to keep the little box in the upper right corner,
, green at all time.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/339010/image.png)
I've fixed your code, based on a bit of guessing, and run
>> objLitz = clLitz( -17, 17, 991 );
>> objLitz
objLitz =
clLitz with properties:
Litz: 991
Npcs: -17
Npcp: 17
kb: 0
where
classdef clWinding
properties
Npcs
Npcp
end
properties (Dependent)
kb
end
methods
function objW = clWinding( Npcs, Npcp )
objW.Npcs = Npcs;
objW.Npcp = Npcp;
end
function kb = get.kb( objW )
kb = objW.Npcs + objW.Npcp;
end
end
end
and
classdef clLitz < clWinding
properties
Litz
end
methods
function objLitz = clLitz (Npcs, Npcp, Litz)
% How to Call Superclass Constructor
objLitz = objLitz@clWinding( Npcs, Npcp);
objLitz.Litz = Litz;
end
end
end
0 Comments
More Answers (1)
Matt J
on 28 Jul 2020
Edited: Matt J
on 28 Jul 2020
Your terminolgy is confusing, so I'm not completely sure I understand your question. "Classes" do not have property values. Only "objects" of classes have property values. If you have an object obj_super and you want to copy all of its non-Dependent property values to a different object obj_sub, then you can use the attached file,
obj_sub=copyprops(obj_super,obj_sub)
0 Comments
See Also
Categories
Find more on Subclass Applications in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!