默认情况下,类的所有属性和方法都可被任何其它类访问:类的所有成员默认都是公共 成员。但在某些情况下,您可能需要保护类的数据和方法,不让其它类访问。您需要将这些成员指定为私有 成员 - 只有声明或定义这些成员的类才能访问它们。
可以使用 public
或 private
成员属性来指定公共或私有成员。例如,以下代码声明一个私有变量(一个属性)和一个私有方法(一个函数)。
例如,下面的类 (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 不区分私有或公共成员。