ActionScript, unlike Java, lets you transparently override public
properties with implicit getters and setters. So you can start with a
public property, and then later decide to use a getter/setter pair
without changing the API of your class. With Java, you can't do that,
so you HAVE to declare the getter/setter pair up front.
As a concrete example:
public class Person {
public var name:String;
}
can be used like this:
p = new Person();
p.name = "fred";
trace(p.name);
Later, you can change the class to this:
public class Person {
private var _name:String;
public function get name():String {
return _name;
}
public function set name(name:String):String {
_name = name;
}
}
After doing that, you can still reference the class in exactly the
same way as before; ActionScript takes care of the implicit
getter/setter magic internally, so you don't have to worry. The net
is that you're not sacrificing encapsulation, you're just not having
to write a bunch of boilerplate code until you actually need to.
cheers,
barneyb
On Tue, Nov 10, 2009 at 12:18 PM, Willy Ray <[email protected]> wrote:
>
> Ok... I'm not asking "can I use getters and setters to properly encapsulate
> my AS classes?". I'm asking why does the accepted ActionScript convention
> seem to be public member variables? Every example I see, every book I buy...
> public properties all the time.
>
> Aren't we Flex developers just as worried about uncontrolled access to these
> members as, say, Java developers? Is there some feature of the language that
> I'm missing that protects against bad data being set into public properties?
>
> /Willy
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Want to reach the ColdFusion community with something they want? Let them know
on the House of Fusion mailing lists
Archive: http://www.houseoffusion.com/groups/flex/message.cfm/messageid:6182
Subscription: http://www.houseoffusion.com/groups/flex/subscribe.cfm
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.37