Übersicht der Zugriffsebenen
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 10 von 87.
Zugriffsmodifikatoren steuern, von wo aus auf Felder und Methoden zugegriffen werden kann. Java verfügt über vier Ebenen der Zugriffskontrolle.
| Modifikator | Gleiche Klasse | Gleiches Paket | Unterklasse | Überall |
|---|---|---|---|---|
private | Ja | Nein | Nein | Nein |
| default (kein Schlüsselwort) | Ja | Ja | Nein | Nein |
protected | Ja | Ja | Ja | Nein |
public | Ja | Ja | Ja | Ja |
public class BankAccount {
private double balance; // Nur diese Klasse
String accountType; // Standard: nur dasselbe Paket
protected String owner; // Dasselbe Paket + Unterklassen
public String bankName; // Überall zugänglich
}private ist am restriktivsten – verwenden Sie es für interne Daten, auf die niemals direkt zugegriffen werden sollte. public ist am offensten – verwenden Sie es für Methoden, die andere Klassen aufrufen müssen.
Wenn du keinen Modifizierer angibst, verwendet Java den Standardzugriff (auch als package-private bezeichnet). Dadurch ist der Zugriff nur innerhalb desselben Pakets möglich.
class Helper { // Klasse mit Standardzugriff
void assist() { } // Methode mit Standardzugriff
}Wählen Sie die restriktivste Zugriffsebene, die es Ihrem Code noch ermöglicht, zu funktionieren. Dies schützt Ihre Daten und macht Ihren Code einfacher zu warten.
Aufgabe
EinfachErstellen wir ein Student-Datensatzsystem, das veranschaulicht, wie Zugriffsmodifizierer die Sichtbarkeit über verschiedene Dateien hinweg steuern.
Du erstellst zwei Dateien, um deinen Code zu organisieren:
Student.java: Definiere eine Student-Klasse mit Feldern, die unterschiedliche Zugriffsebenen verwenden:private-Feld:studentId(String) – nur innerhalb der Student-Klasse zugänglich- Feld mit Standardzugriff (kein Modifizierer):
grade(int) – innerhalb desselben Pakets zugänglich protected-Feld:name(String) – im selben Paket und in Unterklassen zugänglichpublic-Feld:school(String) – überall zugänglich
public-Methode namensgetInfo(), die einen String im folgenden Format zurückgibt:"[studentId] name - Grade grade at school"Main.java: Erstelle ein Student-Objekt und zeige, auf welche Felder direkt von außerhalb der Klasse zugegriffen werden kann. Gib zuerst das Feldschooldirekt aus und anschließend das Ergebnis vongetInfo(), um alle Informationen des Studenten anzuzeigen.
Du erhältst vier Eingaben: studentId, name, grade und school (in dieser Reihenfolge).
Deine Ausgabe sollte aus zwei Zeilen bestehen: dem direkt abgerufenen Schulnamen, gefolgt von den vollständigen Studenteninformationen aus der Methode getInfo().
Probier es selbst
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Eingaben einlesen
String studentId = scanner.nextLine();
String name = scanner.nextLine();
int grade = Integer.parseInt(scanner.nextLine());
String school = scanner.nextLine();
// TODO: Erstelle ein Student-Objekt mit den Eingabewerten
// TODO: Gib das Feld school direkt aus (zugänglich, da es public ist)
// TODO: Gib das Ergebnis von getInfo() aus, um alle Schülerinformationen anzuzeigen
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler