Without access control, any class could reach into any other and change its internals. Access modifiers decide who can see a field or method: private, default (package), protected and public, from most to least restrictive. Start with private and widen only when another class really needs access. A common confusion is protected, which also opens the member to every class in the same package, not only to subclasses.