Eine Möglichkeit, die Datenkapselung zu erzwingen, ist die Verwendung von Accessoren und Mutatoren. Die Rolle von Accessoren und Mutatoren besteht darin, die Werte des Status eines Objekts zurückzugeben und festzulegen. Lassen Sie uns lernen, wie Accessoren und Mutatoren in Java programmiert werden. Als Beispiel verwenden wir eine Person-Klasse mit dem bereits definierten Status und Konstruktor:
Eine Zugriffsmethode wird verwendet, um den Wert eines privaten Feldes zurückzugeben. Es folgt einem Namensschema, bei dem das Wort "get" an den Anfang des Methodennamens gesetzt wird. Fügen wir zum Beispiel Zugriffsmethoden für Vorname, Vorname und Nachname hinzu:
Diese Methoden geben immer den gleichen Datentyp wie das zugehörige private Feld (z. B. String) zurück und geben dann einfach den Wert dieses privaten Felds zurück.
Wir können jetzt über die Methoden eines Person-Objekts auf deren Werte zugreifen:
Eine Mutatormethode wird verwendet, um einen Wert eines privaten Felds festzulegen. Es folgt einem Benennungsschema, bei dem das Wort "set" an den Anfang des Methodennamens gesetzt wird. Fügen wir beispielsweise Mutatorfelder für Adresse und Benutzername hinzu:
Diese Methoden haben keinen Rückgabetyp und akzeptieren einen Parameter, der dem Datentyp des entsprechenden privaten Felds entspricht. Der Parameter wird dann verwendet, um den Wert dieses privaten Feldes festzulegen.
Es ist jetzt möglich, die Werte für die Adresse und den Benutzernamen im Objekt Person zu ändern:
Es ist leicht zu dem Schluss zu kommen, dass wir einfach die privaten Felder der Klassendefinition so ändern könnten, dass sie öffentlich sind und die gleichen Ergebnisse erzielen. Es ist wichtig, sich daran zu erinnern, dass wir die Daten des Objekts so weit wie möglich ausblenden möchten. Der zusätzliche Puffer, der durch diese Methoden bereitgestellt wird, ermöglicht uns Folgendes:
Nehmen wir an, wir ändern die Art und Weise, in der wir Zweitnamen speichern. Anstelle nur eines Strings können wir jetzt ein Array von Strings verwenden:
Die Implementierung innerhalb des Objekts hat sich geändert, aber die Außenwelt ist nicht betroffen. Der Aufruf der Methoden bleibt exakt gleich:
Angenommen, die Anwendung, die das Objekt Person verwendet, akzeptiert nur Benutzernamen mit maximal zehn Zeichen. Wir können dem Mutator setUsername eine Validierung hinzufügen, um sicherzustellen, dass der Benutzername dieser Anforderung entspricht:
Wenn der an den Mutator setUsername übergebene Benutzername länger als zehn Zeichen ist, wird er automatisch abgeschnitten.