User Guide

Implicit getter/setter methods 63
trace("Creating subwidget # "+Widget.widgetCount);
}
}
The ActionScript 2.0 compiler can resolve static member references within class definitions. In
the previous example, if you don't specify the class name for the
Widget.widgetCount property,
but instead refer only to
widgetCount, the ActionScript 2.0 compiler ascertains that the reference
is actually to
Widget.widgetCount and correctly exports that property. Similarly, if you referred
to the property as
SubWidget.widgetCount, the compiler rewrites the reference (in the bytecode,
not in your AS file) as
Widget.widgetCount because SubWidget is a subclass of the Widget class.
However, for optimal readability of your code, it is recommended that you always use explicit
references in your code, as shown in the previous example, to easily identify where the definition
of a static member resides.
Implicit getter/setter methods
Object-oriented programming practice discourages direct access to properties within a class.
Classes typically define getter methods that provide read access and setter methods that provide
write access to a given property. For example, imagine a class that contains a property called
userName:
var userName:String;
Instead of allowing instances of the class to directly access this property (obj.userName =
"Jody"
, for example), the class might have two methods, getUserName and setUserName, that
would be implemented as shown in the following example:
class LoginClass {
private var userName:String;
function LoginClass(name:String) {
this.userName = name;
}
function getUserName():String {
return this.userName;
}
function setUserName(name:String):Void {
this.userName = name;
}
}
As you can see, getUserName returns the current value of userName, and setUserName sets the
value of
userName to the string parameter passed to the method. An instance of the class would
then use the following syntax to get or set the
userName property:
var obj:LoginClass = new LoginClass("RickyM");
// calling "get" method
var name = obj.getUserName();
trace(name);
// calling "set" method
obj.setUserName("EnriqueI");
trace(obj.getUserName());