控制成员访问

默认情况下,类的所有属性和方法都可被任何其它类访问:类的所有成员默认都是公共 成员。但在某些情况下,您可能需要保护类的数据和方法,不让其它类访问。您需要将这些成员指定为私有 成员 - 只有声明或定义这些成员的类才能访问它们。

可以使用 publicprivate 成员属性来指定公共或私有成员。例如,以下代码声明一个私有变量(一个属性)和一个私有方法(一个函数)。

例如,下面的类 (LoginClass) 定义一个名为 userName 的私有属性,和一个名为
getUserName() 的私有方法。

class LoginClass {
  private var userName:String;
  private function getUserName() {
    return userName;
  }
  //构造函数
  function LoginClass(user:String) {
    this.userName = user;
  }
}

私有成员(属性和方法)只能由定义这些成员的类和该原始类的子类访问。原始类的实例,或该类的子类的实例,不能访问声明为私有成员的属性和方法;也就是说,私有成员只能在类定义中访问,而不能在实例级别上访问。

例如,可以创建 LoginClass 的一个子类(名为 NewLoginClass)。这个子类可以访问
LoginClass 定义的私有属性 (userName) 和私有方法 (getUserName())。

class NewLoginClass extends LoginClass {
  // 可以访问 userName 和 getUserName()    
}

但是,LoginClass 或 NewLoginClass 的实例不能访问这些私有成员。例如,如果将以下代码添加到某个 FLA 文件内的帧脚本中,将出现一个编译器错误,提示您 getUserName() 是私有成员,不能访问。

var loginObject:LoginClass = new LoginClass("Maxwell");
var user = loginObject.getUserName();

还应注意成员访问控制是一个仅限于编译时的功能;在运行时,Flash Player 不区分私有或公共成员。