====== Geheimnisprinzip ====== Unter dem Geheimnisprinzip versteht man die Absicht, die internen Details der Implementierung einer Klasse nach außen hin zu verbergen. Dies wird dadurch erreicht, dass die Datenfelder mit dem Zugriffsmodifikator //private// definiert werden. Hierdurch kann nur die Klasse selbst direkt auf die [[..:datenfeld:start|Datenfelder]] zugreifen, sowohl lesend als auch speichernd. Der Zugriff erfolgt über sogenannte Getter-/Setter-Methoden. Das Geheimnisprinzip bietet folgende Vorteile: * der Benutzer der Klasse muss sich nicht mit der genauen Implementierung der Klasse auskennen (Stichwort [[..:modularisierung:start|Modularisierung]]). * es wird verhindert, dass ein Benutzer sich zu stark auf die Details der Implementierung verlässt und man diese als Autor der Klasse später nicht ohne weiteres ändern könnte. * durch den indirekten Zugriff über eine Setter-Methode kann verhindert werden, dass das Datenfeld einen unsinnigen Inhalt annimmt. Allerdings können Datenfelder auch mit anderen Zugriffsrechten angelegt werden, hier die komplette Übersicht: * public – (engl. öffentlich), unbeschränkter Zugriff * protected – (engl. geschützt), Zugriff nur von der Klasse sowie von Unterklassen (Klassen, die [[..:vererbung:start|erben]]) * private – (engl. privat), nur die Klasse selbst kann es sehen * package – (engl. Paket), innerhalb des Pakets sichtbar