Datassist interview question

What is the difference between "public," "private," and "protected" access modifiers in Java, and when would you use each one?