![]() ![]()  | |
面向对象的编程惯例不提倡直接访问类内的属性。类通常会定义“获取”方法和“设置”方法来分别提供对给定属性的读访问和写访问。例如,假设某个类包含一个名为 userName 的属性:  
var userName:String;
该类不允许其实例直接访问这个属性(例如 obj.userName = "Jody"),而改为提供两个方法 getUserName 和 setUserName。这两个方法的实现代码如下所示:
function getUserName:String() {
  return userName;
}
function setUserName(name:String): {
  userName = name;
}
您可以看到,getUserName 返回 userName 的当前值,而 setUserName 将 userName 的值设置为传递给该方法的字符串参数。这样,该类的实例将使用以下语法来获取或设置 userName 属性。
// 调用“获取”方法
var name = obj.getUserName();
// 调用“设置”方法
obj.setUserName("Jody");
但是,如果您想使用更简明的语法,可以使用隐式 获取/设置方法。利用隐式获取/设置方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。
若要定义这些方法,应使用 get 和 set 方法属性。首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 get 或 set 关键字。
function get user():String {
  return userName;
}
function set user(name:String):Void {
  userName = name;
}
获取方法不能有任何参数。而设置方法必须有一个必要参数。设置方法与同一范围内的获取方法可以具有相同的名称。但获取/设置方法的名称不能与其它属性的名称相同。例如,在上面的示例代码中,因为定义了名为 user 的获取/设置方法,所以在同一个类中就不能再有名称也为 user 的属性了。
与普通方法不同,调用获取/设置方法时,方法名后面不带任何括号或参量。例如,现在可以按照以下语法使用上面定义的获取/设置方法来访问或修改 userName 的值。
var name = obj.user; obj.user = "Jack";
注意:隐式获取/设置方法是对动作脚本 1 中 Object.addProperty() 方法的句法简化。
![]() ![]()  | |