Menu
Coddy logo textTech

Ü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.

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 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.

challenge icon

Aufgabe

Einfach

Erstellen 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änglich
    • public-Feld: school (String) – überall zugänglich
    Füge einen Konstruktor hinzu, der alle vier Felder setzt, sowie eine public-Methode namens getInfo(), 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 Feld school direkt aus und anschließend das Ergebnis von getInfo(), 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
        
    }
}
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

Übe selbstständig: Online-Java-Compiler