apache-flex - private 和 protected(在 Flex 中)到底有什么区别?

标签 apache-flex oop scope

在 Flex(和许多其他语言)中,类的函数/方法可以声明为私有(private)或 protected (或公共(public))。有什么不同?我的印象是它与子类的关系以及事物的继承方式或调用方式有关,但我不确定到底是什么。

最佳答案

一般来说:

  • 私有(private)成员只能访问 由类(class)本身。
  • protected 成员只能由类本身及其后代访问。
  • 公共(public)成员可供所有人访问。

因此,随着您从私有(private)到 protected 再到公共(public),可见性会增加。

在 C++ 中,您可以通过在基类名称前加上 privateprotectedpublic 来控制成员的可见性应如何继承给后代 关键字,这意味着您希望基类成员的可见性最多处于该级别。

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/

相关文章:

JavaScript:如何 `.bind()` `Function` 到另一个对象

PHP OOP 类设计

javascript - image.onload 到方法中

javascript - 对象层次结构中的变量范围

apache-flex - 在 FlashDevelop 中为 Halo/Flex 4 设置 compiler.theme 选项

.net - 解决方案源代码组织指南(OO/DDD)

javascript - 从声明它的函数外部访问变量

apache-flex - 在 Flex 中创建类型安全的集合

javascript - 一页中的多个窗口用于书签

actionscript-3 - 在 Flash Player 11 中按 channel 分析声音