Private-Modifikator
Wie Felder und Methoden vor anderen Klassen verbergen
Zugriffsmodifizierer werden verwendet, um die Sichtbarkeit und Zugänglichkeit von Variablen und Methoden in Java zu steuern. Sie ermöglichen es, den Geltungsbereich festzulegen und den Zugriff auf bestimmte Mitglieder einer Klasse einzuschränken.
Wir haben Zugriffsmodifizierer bereits im vorherigen Abschnitt behandelt. Nun betrachten wir den am häufigsten verwendeten Zugriffsmodifizierer – private – genauer.
Wie bekannt, kann mit dem Zugriffsmodifizierer private ein Feld oder eine Methode nur innerhalb der Klasse, in der es sich befindet, verwendet werden. Sehen wir uns ein Beispiel für die Verwendung des Modifizierers private an:
Wenn beispielsweise eine Variable in einer Klasse nicht für eine andere Klasse sichtbar oder zugänglich sein soll, kann der Zugriffsmodifizierer private verwendet werden:
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }
Wir haben die Felder der Klasse Person als private deklariert. Wenn versucht wird, das Feld direkt zu initialisieren, tritt ein Fehler auf, der darauf hinweist, dass das Feld name einen private-Zugriffsmodifizierer besitzt und im Hauptprogramm nicht aufgerufen oder verändert werden kann.
Wie ein privates Feld initialisiert wird
Die einfachste Möglichkeit, den Schutz zu umgehen, ist die Initialisierung über einen Konstruktor. Auf diese Weise können jedoch nur die Felder von Objekten initialisiert, aber nicht auf diese Felder zugegriffen werden. Sehen wir uns ein Beispiel an:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }
Wir konnten das Feld name über den Konstruktor initialisieren, jedoch ist weiterhin kein Zugriff auf dieses Feld möglich, um es mit System.out.println() auszugeben. Um dies zu umgehen, kann die Methode toString() überschrieben werden, sodass beim Aufruf von System.out.println(bob); Informationen über die Felder angezeigt werden.
Betrachten wir ein Beispiel:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
Wir haben es schließlich geschafft, den Wert des Feldes name des Objekts bob anzuzeigen. Dies wurde durch die Verwendung der überschriebenen toString()-Methode erreicht, in der wir die Logik zur Anzeige des name implementiert haben.
Es stellt sich die Frage, warum wir diesen Zugriffsmodifikator benötigen, wenn wir so viel zusätzlichen Code schreiben müssen?
Manchmal gibt es in verschiedenen Klassen Variablen mit gleichem Namen, und in solchen Fällen ist es notwendig, die Variablen dieser Klassen zu verbergen, damit andere Klassen keinen Zugriff auf unnötige Felder haben. Dies verbessert die Übersichtlichkeit und Wartbarkeit des Codes erheblich, da klar ist, welches Feld zu welcher Klasse gehört.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 2.63
Private-Modifikator
Swipe um das Menü anzuzeigen
Wie Felder und Methoden vor anderen Klassen verbergen
Zugriffsmodifizierer werden verwendet, um die Sichtbarkeit und Zugänglichkeit von Variablen und Methoden in Java zu steuern. Sie ermöglichen es, den Geltungsbereich festzulegen und den Zugriff auf bestimmte Mitglieder einer Klasse einzuschränken.
Wir haben Zugriffsmodifizierer bereits im vorherigen Abschnitt behandelt. Nun betrachten wir den am häufigsten verwendeten Zugriffsmodifizierer – private – genauer.
Wie bekannt, kann mit dem Zugriffsmodifizierer private ein Feld oder eine Methode nur innerhalb der Klasse, in der es sich befindet, verwendet werden. Sehen wir uns ein Beispiel für die Verwendung des Modifizierers private an:
Wenn beispielsweise eine Variable in einer Klasse nicht für eine andere Klasse sichtbar oder zugänglich sein soll, kann der Zugriffsmodifizierer private verwendet werden:
Main.java
123456789101112131415package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }
Wir haben die Felder der Klasse Person als private deklariert. Wenn versucht wird, das Feld direkt zu initialisieren, tritt ein Fehler auf, der darauf hinweist, dass das Feld name einen private-Zugriffsmodifizierer besitzt und im Hauptprogramm nicht aufgerufen oder verändert werden kann.
Wie ein privates Feld initialisiert wird
Die einfachste Möglichkeit, den Schutz zu umgehen, ist die Initialisierung über einen Konstruktor. Auf diese Weise können jedoch nur die Felder von Objekten initialisiert, aber nicht auf diese Felder zugegriffen werden. Sehen wir uns ein Beispiel an:
Main.java
123456789101112131415161718package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }
Wir konnten das Feld name über den Konstruktor initialisieren, jedoch ist weiterhin kein Zugriff auf dieses Feld möglich, um es mit System.out.println() auszugeben. Um dies zu umgehen, kann die Methode toString() überschrieben werden, sodass beim Aufruf von System.out.println(bob); Informationen über die Felder angezeigt werden.
Betrachten wir ein Beispiel:
Main.java
1234567891011121314151617181920212223package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
Wir haben es schließlich geschafft, den Wert des Feldes name des Objekts bob anzuzeigen. Dies wurde durch die Verwendung der überschriebenen toString()-Methode erreicht, in der wir die Logik zur Anzeige des name implementiert haben.
Es stellt sich die Frage, warum wir diesen Zugriffsmodifikator benötigen, wenn wir so viel zusätzlichen Code schreiben müssen?
Manchmal gibt es in verschiedenen Klassen Variablen mit gleichem Namen, und in solchen Fällen ist es notwendig, die Variablen dieser Klassen zu verbergen, damit andere Klassen keinen Zugriff auf unnötige Felder haben. Dies verbessert die Übersichtlichkeit und Wartbarkeit des Codes erheblich, da klar ist, welches Feld zu welcher Klasse gehört.
Danke für Ihr Feedback!