getter 和 setter 方法的语法如下所示:
* getter 方法不能有任何参数,始终返回一个值。
* setter 方法始终带一个参数,从不返回任何值。
类通常会定义 getter 方法和 setter 方法来分别提供对给定属性的读访问和写访问。例如,假设某个类包含一个名为 userName 的属性:
private var userName:String;
该类不允许其实例直接访问这个属性(例如 user.userName = "Buster"),而改为提供两个方法 getUserName 和 setUserName,其实现如下一个示例所示。
使用 getter 和 setter 方法:
1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
2. 在"脚本"窗口中键入以下代码:
class Login {
private var __username:String;
public function Login(username:String) {
this.__username = username;
}
public function getUserName():String {
return this.__username;
}
public function setUserName(value:String):Void {
this.__username = value;
}
}
3. 将 ActionScript 文档保存为 Login.as。
您可以看到,getUserName() 返回 userName 的当前值,而 setUserName() 将 userName 的值设置为传递给该方法的字符串参数。
4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login.as 相同的目录下,文件名为 login_test.fla。
5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:
var user:Login = new Login("RickyM");
// 调用 getUserName() 方法
var userName:String = user.getUserName();
trace(userName); // RickyM
// 调用 setUserName() 方法
user.setUserName("EnriqueI");
trace(user.getUserName()); // EnriqueI
6. 选择"控制">"测试影片"对文件进行测试。
Flash 会将以下信息显示在"输出"面板中:
RickyM
EnriqueI
但是,如果要使用更简明的语法,可以使用隐式 getter 和 setter 方法。利用隐式 getter 和 setter 方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。
若要定义这些方法,应使用 get 和 set 方法属性。首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 get 或 set 关键字,如下一个示例所示。
注意
隐式 getter 和 setter 方法是对 ActionScript 1.0 中 Object.addProperty() 方法的句法简化。
使用隐式 getter 和 setter 方法:
1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
2. 在"脚本"窗口中键入以下代码:
class Login2 {
private var __username:String;
public function Login2(username:String) {
this.__username = username;
}
public function get userName():String {
return this.__username;
}
public function set userName(value:String):Void {
this.__username = value;
}
}
3. 将 ActionScript 文档保存为 Login2.as。
切记,getter 方法不带任何参数。而 setter 方法必须正好有一个必要参数。setter 方法与同一作用域内的 getter 方法可以具有相同的名称。但 getter 和 setter 方法不能与其它属性同名。例如,在上面的示例代码中,您定义了名为 userName 的 getter 和 setter 方法;在此情况下,在同一个类中就不能再有名称也为 userName 的属性了。
4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login2.as 相同的目录下,文件名为 login2_test.fla。
5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:
var user:Login2 = new Login2("RickyM");
// 调用"获取"方法
var userNameStr:String = user.userName;
trace(userNameStr); // RickyM
// 调用"设置"方法
user.userName = "EnriqueI";
trace(user.userName); // EnriqueI
与普通方法不同,调用 getter 和 setter 方法时,方法名后面不带任何括号或参量。调用 getter 和 setter 方法与调用同名属性类似。
6. 保存 Flash 文档,然后选择"控制">"测试影片"对文件进行测试。
Flash 会将以下信息显示在"输出"面板中:
RickyM
EnriqueI
* getter 方法不能有任何参数,始终返回一个值。
* setter 方法始终带一个参数,从不返回任何值。
类通常会定义 getter 方法和 setter 方法来分别提供对给定属性的读访问和写访问。例如,假设某个类包含一个名为 userName 的属性:
private var userName:String;
该类不允许其实例直接访问这个属性(例如 user.userName = "Buster"),而改为提供两个方法 getUserName 和 setUserName,其实现如下一个示例所示。
使用 getter 和 setter 方法:
1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
2. 在"脚本"窗口中键入以下代码:
class Login {
private var __username:String;
public function Login(username:String) {
this.__username = username;
}
public function getUserName():String {
return this.__username;
}
public function setUserName(value:String):Void {
this.__username = value;
}
}
3. 将 ActionScript 文档保存为 Login.as。
您可以看到,getUserName() 返回 userName 的当前值,而 setUserName() 将 userName 的值设置为传递给该方法的字符串参数。
4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login.as 相同的目录下,文件名为 login_test.fla。
5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:
var user:Login = new Login("RickyM");
// 调用 getUserName() 方法
var userName:String = user.getUserName();
trace(userName); // RickyM
// 调用 setUserName() 方法
user.setUserName("EnriqueI");
trace(user.getUserName()); // EnriqueI
6. 选择"控制">"测试影片"对文件进行测试。
Flash 会将以下信息显示在"输出"面板中:
RickyM
EnriqueI
但是,如果要使用更简明的语法,可以使用隐式 getter 和 setter 方法。利用隐式 getter 和 setter 方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。
若要定义这些方法,应使用 get 和 set 方法属性。首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 get 或 set 关键字,如下一个示例所示。
注意
隐式 getter 和 setter 方法是对 ActionScript 1.0 中 Object.addProperty() 方法的句法简化。
使用隐式 getter 和 setter 方法:
1. 选择"文件">"新建",再选择"ActionScript 文件",然后单击"确定"。
2. 在"脚本"窗口中键入以下代码:
class Login2 {
private var __username:String;
public function Login2(username:String) {
this.__username = username;
}
public function get userName():String {
return this.__username;
}
public function set userName(value:String):Void {
this.__username = value;
}
}
3. 将 ActionScript 文档保存为 Login2.as。
切记,getter 方法不带任何参数。而 setter 方法必须正好有一个必要参数。setter 方法与同一作用域内的 getter 方法可以具有相同的名称。但 getter 和 setter 方法不能与其它属性同名。例如,在上面的示例代码中,您定义了名为 userName 的 getter 和 setter 方法;在此情况下,在同一个类中就不能再有名称也为 userName 的属性了。
4. 选择"文件">"新建",然后选择"Flash 文档",以创建一个新的 FLA,将其保存到与 Login2.as 相同的目录下,文件名为 login2_test.fla。
5. 将下面的 ActionScript 添加到主时间轴中的第 1 帧:
var user:Login2 = new Login2("RickyM");
// 调用"获取"方法
var userNameStr:String = user.userName;
trace(userNameStr); // RickyM
// 调用"设置"方法
user.userName = "EnriqueI";
trace(user.userName); // EnriqueI
与普通方法不同,调用 getter 和 setter 方法时,方法名后面不带任何括号或参量。调用 getter 和 setter 方法与调用同名属性类似。
6. 保存 Flash 文档,然后选择"控制">"测试影片"对文件进行测试。
Flash 会将以下信息显示在"输出"面板中:
RickyM
EnriqueI