I find this a weird question. It's useful when you need to use a class which is not in your current package. Which happens all the time.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.
Well you need an instance of a class to access it's members unless they are static. It's only possible when the class is visible to you. Besides creating an instance class being public makes itself extensible too.
In short public class makes itself reusable which is ultimate goal of the Object Oriented Programming.