When you are thinking of access modifiers just think of it in this way (applies to both variables and methods):
public --> accessible from every where
private --> accessible only within the same class where it is declared
Now the confusion arises when it comes to default and protected
default --> No access modifiedmodifier keyword is present. This means it is available strictly within the package of the class. Nowhere outside that package it can be accessed.
protected --> Slightly less stricter than default and apart from the same package classes it can be accessed by sub classes outside the package it is declared.