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