Menu
Coddy logo textTech

Überblick über 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 hat vier Stufen der Zugriffskontrolle.

ModifikatorGleiche KlasseGleiches PaketUnterklasseÜberall
privateJaNeinNeinNein
default (kein Schlüsselwort)JaJaNeinNein
protectedJaJaJaNein
publicJaJaJaJa
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 Sie keinen Modifikator angeben, verwendet Java den default-Zugriff (auch package-private genannt). Dies erlaubt den Zugriff nur innerhalb desselben Pakets.

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.

challenge icon

Aufgabe

Einfach

Lassen Sie uns ein Student-Erfassungssystem erstellen, das demonstriert, wie Zugriffsmodifikatoren die Sichtbarkeit über verschiedene Dateien hinweg steuern.

Sie werden zwei Dateien erstellen, um Ihren Code zu organisieren:

  • Student.java: Definieren Sie eine Student-Klasse mit Feldern, die unterschiedliche Zugriffsebenen verwenden:
    • private Feld: studentId (String) - nur innerhalb der Student-Klasse zugänglich
    • Standard (kein Modifikator) Feld: grade (int) - innerhalb desselben Pakets zugänglich
    • protected Feld: name (String) - im selben Paket und in Unterklassen zugänglich
    • public Feld: school (String) - überall zugänglich
    Fügen Sie einen Konstruktor hinzu, der alle vier Felder setzt, und eine public Methode namens getInfo(), die einen String im Format "[studentId] name - Grade grade at school" zurückgibt.
  • Main.java: Erstellen Sie ein Student-Objekt und demonstrieren Sie, auf welche Felder direkt von außerhalb der Klasse zugegriffen werden kann. Geben Sie das Feld school direkt aus und geben Sie dann das Ergebnis von getInfo() aus, um alle Informationen des Studenten anzuzeigen.

Sie erhalten vier Eingaben: studentId, name, grade und school (in dieser Reihenfolge).

Ihre Ausgabe sollte aus zwei Zeilen bestehen: der direkt aufgerufene Schulname, gefolgt von den vollständigen Studenteninformationen aus der Methode getInfo().

Spickzettel

Zugriffsmodifikatoren steuern, von wo aus auf Felder und Methoden zugegriffen werden kann. Java hat vier Stufen der Zugriffskontrolle:

ModifikatorGleiche KlasseGleiches PaketUnterklasseÜberall
privateJaNeinNeinNein
default (kein Schlüsselwort)JaJaNeinNein
protectedJaJaJaNein
publicJaJaJaJa
public class BankAccount {
    private double balance;      // Nur diese Klasse
    String accountType;          // Default: nur gleiches Paket
    protected String owner;      // Gleiches 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 Sie keinen Modifikator angeben, verwendet Java den default-Zugriff (auch package-private genannt), der den Zugriff nur innerhalb desselben Pakets erlaubt:

class Helper {           // Klasse mit Default-Zugriff
    void assist() { }    // Methode mit Default-Zugriff
}

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.

Probier es selbst

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Eingaben lesen
        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 Informationen zum Studenten anzuzeigen
        
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung