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 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).
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
erben)
private – (engl. privat), nur die Klasse selbst kann es sehen
package – (engl. Paket), innerhalb des Pakets sichtbar