How to pass field values to subclass from superclass?

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

As you've written it clWinding is your superclass and clLitz the subclass. The subclass inherits from the superclass.
Can you show the exact code you run to try to create (instantiate) a clLitz object and show the full and exact text of any error messages you received when you executed that code?
Hi Steven,
Thankyou for your quick reply. It is a small part of my code. I cannot run a single class. So i think i cannot send the errors. When i created an object "objLitz" for clLitz, i got all the parameters which i defined in clWindingPrimary but i didnot get the values of them. how to do that was my question?
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
Once again Thankyou for your reply. So, you mean i need to assign values manually for the superclass properties in my subclass right.

댓글을 달려면 로그인하십시오.

 채택된 답변

per isakson
per isakson 2020년 7월 30일
There are syntax errors in your code. Try to keep the little box in the upper right corner, , green at all time.
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

추가 답변 (1개)

Matt J
Matt J 2020년 7월 28일
편집: Matt J 2020년 7월 28일
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)

카테고리

질문:

2020년 7월 27일

답변:

2020년 7월 30일

Community Treasure Hunt

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

Start Hunting!

Translated by