Tags:
delphi
Hej
Jeg har lavet en super class der indenholder nogle procedure samt nogle variable.
Derefter har jeg lavet to nye sub classer der er ned arvet fra super classen.
Mit spørgsmål er om det er muligt at gøre variablen der stammer fra super classen er ens for de to nye sub classer.
Det vil sige at hvis den ene sub classe skriver til variablen vil den anden sub classe kunne læse denne værdi.
Altså er det muligt at share Variable fra en super classen til de ned arvet classer??
MVH
Sofus
2 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 8 karma
Hedder du Nikolaj eller Sofus??
Nikolaj.
Du har misforstået konceptet omkring klasser.
En klasse er IKKE det samme som et objekt.
Så når du har en superklasse, med en eller flere arvinger, er det jo i virkeligheden instanser af denne klasse du opretter.
Forestil dig følgende analogi:
Din superklasse er TMotorkoretoj, du har to subklasser: TBil og TMotorcykel.
Klasserne er tegningerne af hvordan de ser ud, du kan nu lave:
minBil := TBil.create, og minMotorCykel := TMototcykel.Create.
Der er ingen mulighed for at gøre som du gerne vil, og det giver heller ikke nogen mening.
Forestil dig følgende:
minBil := TBil.Create;
minBil2 := TBil.Create;
Du har nu faktisk TO instanser (=objekter) af samme KLASSE (=tegning).
Dine to objekter en indtil videre ens, men de lever hver deres liv..
Det som du KAN gøre, er at have en global variabel på hvem der nu EJER dine to biler..
F.eks har du klassen TMotorkoretojEjer, og i TMotorKoretoj sætter du owner med ind i constructoren, sådan at du tvinger programmøreren til at skrive:
Ejer := TMotorkoretojEjer.create;
minBil := TBil.Create(ejer);
minBil2 := TBil.Create(ejer);
minMotorcykel := TMotorCykel.Create(ejer);
Nu kan du senere skrive:
minBil.Ejer.Bukser.Farve := 'GUL';
og så vil
ShowMessage(minBil2.Ejer.Bukser.farve); vise "GUL" i boksen.
Håber det gav dig lidt forståelse for forskellen mellem en klasse og et objekt.
/Jens