Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Private-Modifikator | Klassen Fortgeschritten
Java Erweitert
course content

Kursinhalt

Java Erweitert

Java Erweitert

1. Tiefe Java-Struktur
2. Methoden
3. String Advanced
4. Klassen
5. Klassen Fortgeschritten

book
Private-Modifikator

Wie können Felder und Methoden vor anderen Klassen verborgen werden?

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 auf ein Feld oder eine Methode nur innerhalb der Klasse zugegriffen werden, in der es sich befindet. Im Folgenden sehen wir ein Beispiel für die Verwendung des private-Modifizierers:

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

Main.java

copy
123456789101112131415
package 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 wir versuchen, das Feld direkt zu initialisieren, erhalten wir einen Fehler, der darauf hinweist, dass das Feld name einen private Zugriffsmodifizierer besitzt und im Hauptprogramm nicht aufgerufen oder verändert werden kann.

Wie kann ein privates Feld initialisiert werden?

Der einfachste Weg, den Schutz zu umgehen, ist die Initialisierung über einen Konstruktor. Allerdings können wir auf diese Weise nur die Felder von Objekten initialisieren, aber nicht auf diese Felder zugreifen. Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
123456789101112131415161718
package 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, aber wir können weiterhin nicht auf dieses Feld zugreifen und es mit System.out.println() ausgeben. Um dies zu umgehen, können wir die Methode toString() überschreiben, sodass beim Aufruf von System.out.println(bob); Informationen über dessen Felder angezeigt werden. Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package 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 erreichten wir durch die Verwendung der überschriebenen Methode toString(), in der wir die Logik zur Anzeige des name implementiert haben.

Es stellt sich die Frage, warum wir diesen Zugriffsmodifikator benötigen, wenn wir dafür so viel zusätzlichen Code schreiben müssen?

Manchmal gibt es in verschiedenen Klassen Variablen mit dem gleichen 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Java Erweitert

Java Erweitert

1. Tiefe Java-Struktur
2. Methoden
3. String Advanced
4. Klassen
5. Klassen Fortgeschritten

book
Private-Modifikator

Wie können Felder und Methoden vor anderen Klassen verborgen werden?

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 auf ein Feld oder eine Methode nur innerhalb der Klasse zugegriffen werden, in der es sich befindet. Im Folgenden sehen wir ein Beispiel für die Verwendung des private-Modifizierers:

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

Main.java

copy
123456789101112131415
package 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 wir versuchen, das Feld direkt zu initialisieren, erhalten wir einen Fehler, der darauf hinweist, dass das Feld name einen private Zugriffsmodifizierer besitzt und im Hauptprogramm nicht aufgerufen oder verändert werden kann.

Wie kann ein privates Feld initialisiert werden?

Der einfachste Weg, den Schutz zu umgehen, ist die Initialisierung über einen Konstruktor. Allerdings können wir auf diese Weise nur die Felder von Objekten initialisieren, aber nicht auf diese Felder zugreifen. Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
123456789101112131415161718
package 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, aber wir können weiterhin nicht auf dieses Feld zugreifen und es mit System.out.println() ausgeben. Um dies zu umgehen, können wir die Methode toString() überschreiben, sodass beim Aufruf von System.out.println(bob); Informationen über dessen Felder angezeigt werden. Sehen wir uns ein Beispiel an:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package 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 erreichten wir durch die Verwendung der überschriebenen Methode toString(), in der wir die Logik zur Anzeige des name implementiert haben.

Es stellt sich die Frage, warum wir diesen Zugriffsmodifikator benötigen, wenn wir dafür so viel zusätzlichen Code schreiben müssen?

Manchmal gibt es in verschiedenen Klassen Variablen mit dem gleichen 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.

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 3
some-alt