Recommended Access Levels
- Instance and static fields: Always private. Exceptions:
- public static final constants are useful and safe
- Some objects, such as System.out, need to be accessible to all programs (public)
- Occasionally, classes in a package must collaborate very closely (give some fields package access); inner classes are usually better
- Methods: public or private
- Classes and interfaces: public or package
- Better alternative to package access: inner classes
- In general, inner classes should not be public (some exceptions exist, e.g., Ellipse2D.Double)
- Beware of accidental package access (forgetting public or private)