Что именно отличает частное от защищенного (во Flex)?

В Flex (и многих других языках) функция / метод класса может быть объявлена ​​закрытой или защищенной (или общедоступной). Какая разница? У меня сложилось впечатление, что это как-то связано с отношениями к дочерним классам и с тем, как вещи наследуются или могут быть вызваны, но я не уверен, что именно.


person Ben Hamill    schedule 09.10.2008    source источник


Ответы (1)


В целом:

  • Доступ к закрытым членам может получить только сам класс.
  • Доступ к защищенным членам может получить только сам класс и его потомки.
  • Публичные члены доступны всем.

Таким образом, видимость увеличивается по мере перехода от частного к защищенному и общедоступному.

В C ++ вы можете управлять тем, как видимость членов должна быть унаследована потомками, добавив к имени базового класса ключевые слова private, protected или public, что означает, что вы хотите, чтобы видимость членов базового класса была не выше этого уровня.

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

В каждом из описанных выше случаев классы-потомки, конечно, могут вводить свои собственные закрытые, защищенные и общедоступные члены.

person Ates Goral    schedule 09.10.2008