Что именно различает частное и защищенное (во Flex)? - PullRequest
2 голосов
/ 09 октября 2008

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

1 Ответ

11 голосов
/ 09 октября 2008

В целом:

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

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

В 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...