Access Modifiers

  • private → only my class
  • defaultmy package
  • protectedmy package + subclasses
  • publiceveryone
class User {
    private String password;     // only User
 
    String name;                 // default → same package
 
    protected int age;           // package + subclasses
 
    public void login() { }      // anywhere
}

Why packages?

  1. Organization → group related classes
  2. Avoid name conflicts → two packages can have User classes
  3. Access control → works with the default and protected access modifiers
  4. Maintainability → keeps large projects structured