If you are maintaining or modifying production code -or- developing an API that you intend to export for other programmers to use, then the best answer is “you should never make classes public unless your clear intent is that your clients should be able to access your class and use it in their own client code .
Read moreWhat does it mean when a class is public?
public is a Java keyword which declares a member’s access as public. Public members are visible to all other classes . This means that any other class can access a public field or method. Further, other classes can modify public fields unless the field is declared as final .
Read more