Warum setzt man bei Java die Attribute als "private" ?

formaldehyd

Enthusiast
Thread Starter
Mitglied seit
08.07.2007
Beiträge
5.042
Ort
Rheinland-Pfalz
kann mir das mal jemand verstaendlich erklaeren ?

ich find dazu nix brauchbares bei google ...

waer nett wenn mir das jemand schildern koennte
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Damit man den Zugriff auf die Attribute besser steuern kann. Nehmen wir als Beispiel einfach eine Klasse Mensch mit den Atributen Namen, Vornamen und Geburtsdatum.

Man macht eigentlicht immer alle Attribute private. Das sorgt dafür, dass anderen Klassen keinen Zugriff auf diese Attribute haben. In der Klasse Mensch hast du aber Zugriff auf dessen private Attribute. Beim Namen und beim Vornamen kann man sich noch darüber streiten aber spätestens beim Geburtsdatum dürfte klar sein warum man das macht. Niemand soll das nachträglich ändern. Es gibt nur eine Möglichkeit das Geburtsdatum zu setzen und zwar über den Konstruktor. Danach sollen andere Klassen das Geburtsdatum zwar auslesen können aber nicht selber verändern können.

Bei E-Mail Adressen hat man ein anderes Problem. Wie sorgt man dafür, dass die E-Mail Adresse auch gültig ist? Man macht das Attribute private und gibt allen anderen Klassen einen setter, der eine Exception wirft, falls die E-Mail nicht stimmt. Andere Attribute dürfen nicht leer sein oder eine Kontonummer, die mindestens X Zeichen hat usw. Gibt genügend Prüfungen in dieser Art.

Da das bei Attribute eigentlich immer der Fall ist, macht man einfach alle Attribute auf private. So ist es einheitlich und wenn sich jeder daran hält, kann man mit fremden Klassen besser arbeiten.

Fazit: Man verwendet private um etwas vor fremden Klassen zu verstecken und zu schützen. Das macht man auch mit Methoden, die nur intern genutzt werden aber anderen Klassen nicht zur verfügung stehen sollen.
 
"Sichtbarkeit" wäre der passende Suchbegriff.

Kurz gesagt: Im nicht in Versuchung zu geraten (bzw. andere nicht in Versuchung zu führen), Variablen/Funktionen "von außen" auf ursprünglich nicht vorgesehene Art und Weise zu benutzen, was zu Nebenwirkungen führen könnte. Also wird die Sichtbarkeit eingeschränkt und für evtl. doch notwendige Zugriffe gibts Extrafunktionen (im einfachsten Falle "getter"/"setter"), am besten schön mit Interface und Schleifchen und so :P
 
Fazit: Man verwendet private um etwas vor fremden Klassen zu verstecken und zu schützen. Das macht man auch mit Methoden, die nur intern genutzt werden aber anderen Klassen nicht zur verfügung stehen sollen.

danke genau so eine kleine antwort hab ich mir erhofft

die grundlegenden funktionen von java kenn ich soweit, ueber get/set methoden, schleifen und verzweigungen bis hin zu try-catch methoden im zusammenhang mit datenbankzugriffen usw. das problem bestand nur darin das ich gefragt wurde "wieso" man die attribute private setzt, hatte aber im netz keine passende antwort dazu gefunden

lag wohl auch an den stichworten in der suche :d

danke trotzdem

-----------------------

edit: kann closed werden !
 
Zuletzt bearbeitet:
das problem bestand nur darin das ich gefragt wurde "wieso" man die attribute private setzt

Die Antwort ist einfach. Es gehört zur objektorientierten Programmierung. Ohne das, wäre objektorientierte Programmierung garnicht möglich. Jede objektorientierte Programmiersprache hat das. Suchbegriff "Information Hiding".
 
Na und was ist mit:
Code:
public static final enum MODE {one, two, three};
private MODE mode = MODE.one;
;)

@TE

Das was little_skunk schreibt stimmt. Allerdings wirst du vll. in deinem weiterem Leben als Programmierer festellen, dass es manchmal sehr hilfreich sein kann Paradigmen aus der objektorientierten Programmierung gerade nicht anzuwenden. Ah und wenn du schon auf dem Pfad der Tugend wandelst: Schau dir mal an was Google unter Pattern bzw. Entwurfsmuster auswirft. Wenn du das kannst, dann schau dir dazu Antipattern an ;).
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh