Frage

In Flex (und vielen anderen Sprachen) eine Funktion / Methode einer Klasse kann privat oder geschützt deklariert werden (oder öffentlich). Was ist der Unterschied? Ich habe den Eindruck, es hat etwas mit der Beziehung zu Kind-Klassen zu tun, und wie die Dinge geerbt oder aufgerufen werden, aber ich bin mir nicht sicher, was genau.

War es hilfreich?

Lösung

Generell gilt:

  • Privat Mitglieder können nur zugegriffen werden, von der Klasse selbst.
  • Geschützte Mitglieder können nur von der Klasse selbst und seine Nachkommen zugegriffen werden.
  • öffentliche Mitglieder für jedermann zugänglich sind.

So Sichtbarkeit erhöht sich, wenn Sie von privaten gehen zu öffentlichen geschützt.

In C ++ können Sie steuern, wie die Sichtbarkeit der Mitglieder an die Nachkommen durch das Voranstellen der Basisklassennamen mit den private, protected oder public Schlüsselwörter vererbt werden sollte, dh Sie die Sichtbarkeit der Basisklasse Mitglieder höchstens sein wollen bei dass Ebene.

class A {
private:
    int privA;
protected:
    int protA;
public:
    int pubA;

    // privA can be accessed inside class A
    // protA can be accessed inside class A
    // pubA  can be accessed inside class A
};
// pubA can be accessed by anyone

class B : public A {
    // No change to visibility of members
    // privA can't be accessed inside class B
    // protA can be accessed inside class B
    // pubA  can be accessed inside class B
};
// pubA can be accessed by anyone

class C : protected A {
    // Public members downgraded to protected
    // privA can't be accessed inside class C
    // protA can be accessed inside class C
    // pubA  can be accessed inside class C
};
// None of the members can be accessed outside class C

class D : private A {
    // Public and protected members downgraded to private
    // privA can't be accessed inside class D
    // protA can't be accessed inside class D
    // pubA  can't be accessed inside class D
};
// None of the members can be accessed outside class D

In jedem der oben genannten Fälle sind die abgeleiteten Klassen natürlich in der Lage, ihre eigenen privaten, geschützten und öffentlichen Mitglieder einzuführen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top