In AS2, we really only had two access control modifiers for an object’s properties and methods…public or private (and you can through in static as well, but even static properties could be public or private). In AS 3, we have more options, and ‘private’ works in a different way than in AS 2.
Lately I’ve been digging through a bunch of different AS3 packages that I’ve downloaded, and I’ve run into a ton of situations where properties that should be marked ‘protected’ were marked as ‘private’. Now, the reason this is a problem is that ‘private’ properties cannot be accessed by subclasses. Using ‘protected’ allows subclasses to access the properties of the parent class, without making them public.
I’m not saying never to use ‘private’, but I feel in most situations, ‘protected’ (or even ‘internal’) is what you really want, especially in cases such as component development, or any case where you can almost count on your classes being subclassed.
FYI, Adobe engineers usually note that using private leads to certain performance gains because the compiler can make optimizations when it knows that a property or method will never be accessed externally.