/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Ændre visibility og genbruge eksisterende ~
Fra : Thomas Eg Jørgensen


Dato : 01-03-08 14:10

Hej,

Sikkert et trivielt spørgsmål for de indviede

Antag at jeg har en klasse:
TMinKlasse = class
public
procedure DoStuff;
end;

Denne nedarbejder jeg fra, men jeg ønsker ikke at DoStuff skal være
private-deklareret i TMinAndenKlasse, altså:

TMinAndenKlasse = class(TMinKlasse)
private
procedure DoStuff;
end;

Jeg kan godt gøre det, men min umiddelbare løsning betyder at jeg skal
skrive en implementation til hver metode hvori jeg blot kalder
inherited. Hagen er at det er jo ikke kønt...især ikke hvis man har
"hundrevis" af metoder der blot skal skjules...og så virker det jo
selvsagt ikke på properties...

Principielt ønsker jeg "blot" at angive i min TMinAndenKlasse at skjule
visse metoder(og properties) fra den klasse jeg arver fra...men
samtidigt skal jeg kunne bruge dem i TMinAndenKlasse "internt"...

Hvad er tricket? (hvis der er et?)

På forhånd tak!

MVH
Thomas



 
 
Thomas Eg Jørgensen (01-03-2008)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 01-03-08 14:11


"Thomas Eg Jørgensen" <thomas@hest.notaplan.com> skrev i en meddelelse
news:47c95518$0$90272$14726298@news.sunsite.dk...
> Denne nedarbejder jeg fra, men jeg ønsker ikke at DoStuff skal være
> private-deklareret i TMinAndenKlasse, altså:
>

wops...jeg var lidt for hurtig der...

Jeg ønsker naturligvis at DoStuff netop SKAL være private-deklareret

MVH
Thomas


Michael Haase (01-03-2008)
Kommentar
Fra : Michael Haase


Dato : 01-03-08 14:59

Thomas Eg Jørgensen skrev dette den 01-03-2008 14:09:

>
> Antag at jeg har en klasse:
> TMinKlasse = class
> public
> procedure DoStuff;
> end;
>
> Denne nedarbejder jeg fra, men jeg ønsker ikke at DoStuff skal være
> private-deklareret i TMinAndenKlasse, altså:
>
> TMinAndenKlasse = class(TMinKlasse)
> private
> procedure DoStuff;
> end;
>

Du kan kun øge visibilityen ved nedarvning. Dvs
private -> protected -> public -> published
og ikke den anden vej.

Måske du i stedet kunne overveje at lade TMinKlasse være nedarvet fra
TMinAndenKlasse i stedet for, da du så netop vil øge visibilityen ved
nedarvning.


--
Michael Haase

Thomas Eg Jørgensen (01-03-2008)
Kommentar
Fra : Thomas Eg Jørgensen


Dato : 01-03-08 16:02


"Michael Haase" <micvans@netscape.invalid> skrev i en meddelelse
news:9173b$47c960d9$55187acf$12552@news.arrownet.dk...
>> Antag at jeg har en klasse:
>> TMinKlasse = class
>> public
>> procedure DoStuff;
>> end;
>>
>> Denne nedarbejder jeg fra, men jeg ønsker ikke at DoStuff skal være
>> private-deklareret i TMinAndenKlasse, altså:
>>
>> TMinAndenKlasse = class(TMinKlasse)
>> private
>> procedure DoStuff;
>> end;
>>
>
> Du kan kun øge visibilityen ved nedarvning. Dvs
> private -> protected -> public -> published
> og ikke den anden vej.
>

Hmm, ok...øv Er der nogen grund til at det forholder sig sådan? Bare
af ren nysgerrighed...

Hvordan gør man i praksis hvis nu man ønsker at ændre visibility?

> Måske du i stedet kunne overveje at lade TMinKlasse være nedarvet fra
> TMinAndenKlasse i stedet for, da du så netop vil øge visibilityen ved
> nedarvning.
>

Mjeao, det ville ikke rigtigt virke i den aktuelle situation desværre:-/

MVH
Thomas


Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste