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.