在 Flex(和许多其他语言)中,类的函数/方法可以声明为私有(private)或 protected (或公共(public))。有什么不同?我的印象是它与子类的关系以及事物的继承方式或调用方式有关,但我不确定到底是什么。
最佳答案
一般来说:
- 私有(private)成员只能访问 由类(class)本身。
- protected 成员只能由类本身及其后代访问。
- 公共(public)成员可供所有人访问。
因此,随着您从私有(private)到 protected 再到公共(public),可见性会增加。
在 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
在上述每种情况下,子类当然可以引入自己的私有(private)成员、保护成员和公共(public)成员。
关于apache-flex - private 和 protected(在 Flex 中)到底有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185825/