Avatar billede mikkeljans Nybegynder
25. februar 2004 - 14:22 Der er 6 kommentarer og
1 løsning

Hvorfor Private?

Hvorfor laver man variabler i en klasse private??
Er det ikke spild af kode?

Hvis man laver en private variable er jeg tvunget til at også lave en function der henter værdien og en der indsætter værdien...
Man kunne jo ligeså godt bare lave dem public og så slippe for Hent og Tildel functionerne?

Nogen der kan forklarer mig menningen med det?
Avatar billede chries Nybegynder
25. februar 2004 - 14:25 #1
Hvorfor låser du døren når du går hjemme fra? Så ingen fucker din lejlighed uden de skal forbi dig =)
Avatar billede arne_v Ekspert
25. februar 2004 - 14:26 #2
Ved at lave den private skjuler du implementationen.

Derfor skal du *altid* bruge private for variable der kun er relevante
for implementationen.

Det anses for pænest at bruge public get og set metoder fremfor public
variable til noget der er relevant udenfor implementationen. Formålet
er at afkoble interfacet fra implementationen. En dag skulle de get
og set måske gøre noget andet. Man kan override metoder i afledte  klasser
men ikke variable etc.etc..

Personligt går jeg ikke amok over en public variabel. Men ...
Avatar billede mikkeljans Nybegynder
25. februar 2004 - 14:44 #3
Hvad præcis er implementationen?
Kan du give nogen eksempler på kode hvor public variabler ville være okay?
Avatar billede arne_v Ekspert
25. februar 2004 - 15:06 #4
interface = hvad klassen gør

implementation = hvordan den gør det

hele pointen i meget OO teori er at man skal kunne skifte implementation
uden at påvirke interface
Avatar billede arne_v Ekspert
25. februar 2004 - 15:08 #5
Hvis der aldrig skal arves fra klassen og det er meget svært at
forestille sig at get og set nogensinde vil lave andet en simpel
assignment, så er det stadig gris ifølge OO teori at lave den
public. Men den praktiske betydning er måske ikke helt så stor.
Avatar billede mikkeljans Nybegynder
25. februar 2004 - 15:27 #6
Okay tak for hjælpen
Avatar billede segmose Nybegynder
25. februar 2004 - 15:38 #7
Det er også godt at have copy constructor og assignemet operator som privat så der ikke sker noget "spændende".
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





White paper
Tidsbegrænset kampagne: Overvejer du at udskifte eller tilføje printere i din forretning? Vi kan tilbyde én eller flere maskiner gratis