What should be public? What should be private?
As a rule of thumb:
- Classes are public.
- Fields are private.
- Constructors are public.
- Getter and setter methods are public.
- Other methods must be decided on a case by case basis.
All of these rules might be freely violated if you have a purpose for doing so. These are simply the defaults in which handle 90 percent of the cases.