Access modifiers in Java control the visibility and accessibility of classes, methods, and variables. The four main access modifiers are: 1. Private - Accessible only within the class. Variables should be private to encapsulate their data. 2. Default - Accessible within the package. Used if no modifier is specified. 3. Protected - Accessible within the package and subclasses. Can be used for methods and variables but not classes. 4. Public - Accessible everywhere, including other packages. Used for interfaces and when accessibility outside the class is needed. Access modifiers on subclasses cannot be more restrictive than the superclass. Local variables cannot have access modifiers.