This post is somehow a way to remember some things that might pass you by, specially if you don't use them very often.
Normally when I define my classes, everything is private unless some method or variable must provide values to another class. Even at this point I consider on putting a callback instead of a public value.
But recently I had the need to explain what a "protected" class was.
Well first of all, in AS3, all classes must be declared public, but their methods or variables can be public, private, internal and protected.
So what's the difference between them?
I'll make a brief description of each one. Then you have useful links if you want further explanations.
Public - These are accessible by everyone. Other classes in the same or another package can access these methods or variables.
Private - Only the class can access them. External class can't see them
Protected - These methods and variables are only accessible for subclasses. If you declare a class by inheriting from another with protected methods or variables, this children class can access these. If it's not a children class these methods or variables are inaccessible.
Internal - All methods and variables declared as "internal" are only shared across the same package.
I think is very straightforward, and only depends of what you're doing and how you plan to do things.
The following links can enlighten you a bit more:
Article on Kirupa.com from Senocular
Hope this helps... it did for me ;)