Sobes.tech
Junior

Wie funktioniert der Zugriffsmodifikator 'protected' in Programmiersprachen?

sobes.tech KI

Antwort von AI

Der Zugriffsmodifikator protected gewährt Zugriff auf ein Klassenmitglied (Feld, Methode oder Eigenschaft) aus:

  • Der Klasse selbst, in der dieses Mitglied deklariert ist.
  • Abgeleiteten Klassen (Unterklassen).
  • In einigen Sprachen (z.B. Java) - aus allen Klassen innerhalb desselben Pakets.

Anwendbarkeit nach Sprachen:

  • Java: Verfügbar innerhalb des Pakets und in abgeleiteten Klassen beliebigen Pakets.
  • C#: Verfügbar innerhalb der Klasse und in abgeleiteten Klassen. Es gibt auch die Kombination protected internal, die Zugriff innerhalb des Assemblies und in abgeleiteten Klassen ermöglicht (einschließlich Klassen in anderen Assemblies).
  • C++: Verfügbar innerhalb der Klasse und in abgeleiteten Klassen.
  • Python: Hat kein strenges protected. Mitglieder, die zum Schutz gedacht sind, werden üblicherweise mit einem Unterstrich (_) am Anfang benannt, was eine Konvention und keine strenge Zugriffsbeschränkung ist.

Beispiel (Java):

class Parent {
    protected int protectedField;

    protected void protectedMethod() {
        // ...
    }
}

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Zugriff aus der abgeleiteten Klasse
        this.protectedMethod(); // Zugriff aus der abgeleiteten Klasse
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Zugriff aus demselben Paket
        p.protectedMethod();   // Zugriff aus demselben Paket
    }
}

class AnotherClassInDifferentPackage {
    // Hat keinen direkten Zugriff auf protected-Mitglieder
    // es sei denn, es ist eine Unterklasse
}

protected wird häufig zur Implementierung von Vererbung verwendet, sodass abgeleitete Klassen die Funktionalität der Elternklasse erweitern können, während sie die internen Details ihrer Interaktion vor der Außenwelt verbergen.