Privat

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
wann muss ich was privat und wann was public deklarieren? gigt es dafür ne faustregel oder so?
 
G

Guest

Gast
mmhh die hab ich schon gesehen aber verstehe des net ganz ...wenn ich eine testklasse habe darf ich dann in einer anderen irgendwas Privat deklarieren? Methoden <oder so?
 

sigma

Mitglied
wenn du weisst das andere Klassen nicht auf bestimmte methode der Klasse zugreifen dürfen dann machst du sie am besten private.

du hast eine klasse a und ein b. in a machst du eine instanz von b. nun darf die klasse a nicht auf alle klassen von b zugreifen. also machst du die a nicht sehen darf private. die private methoden sind dann nur in b ersichtlich

und noch was.

variablen machst du immer private. wenn du auf sie zugreifen möchtest machst du entsprechende seter und geter methoden. laut mvc-model ist dies am schönsten.

dies ist das wichtigste.
alles klar?

gruss sigma
 

me.toString

Bekanntes Mitglied
Noch ein kleines Beispiel ( damit hab ich's auch verstanden ... 8) )

Stell dir vor, du schreibst eine Zeitklasse, die intern die Zeit in Minuten abbildet. Nun kommen andere daher und benutzen deine Klasse und greifen, weil du ja alles public gemacht hast auf deine Attribute zu. ... ist ja nicht weiter schlimm denkst du jetzt ... . Auch wenn du getter- und setter-Methoden drin hast, werden viele Entwickler trotzdem direkt auf deine public-Attribute zugreifen ( ... glaub mir ... sie tun es ... auch wenn du 1000x mal sagst: "Nehmt bitte die geter- und setter-Methoden"). Und nun hast du ein Problem, wenn du die interne Darstellung ändern willst, z.B. willst du jetzt die zeit nicht in Minuten sondern in Millisekunden abbilden. Auch wenn du mit deiner getter-Methode immernoch Minuten zurückgibst haben alle, die deine Attribute direkt benutzen ein Problem. Stell dir vor, da schreibt einer 'ne Musik-Verwaltung mit deiner Klasse und auf einmal dauert ein Lied der "Wildecker Herzbuben" nicht mehr 3 Minuten sondern 180000 Minuten ( da wird man ja blöd im Kopf ... :lol: ). Jeder der deine Attribute benutzt hat, muss sein Programm umschreiben !!! Und deshalb: machst du die Attribute private und definierst mit deinen getter- und setter-Methoden eine feste Schnittstelle nach aussen. Wenn du jetzt deine Zeitklasse umbauen willst / musst, brauchst du nur die getter- und setter-Methoden anpassen ... und kein anderer bekommt mit, dass du was verändert hast.

Natürlich ist private auch noch für andere Sachen gut ... aber das ist eine andere Geschichte und soll an einer anderen Stelle erzählt werden.

Alles klar ??

Viel Spass mit Java
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben