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





В целом:
Таким образом, видимость увеличивается по мере перехода от частного к защищенному и общедоступному.
В 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
В каждом из вышеперечисленных случаев классы-потомки, конечно, могут вводить свои собственные закрытые, защищенные и общедоступные члены.