Skip to main content

Access Modifiers in Java: A Guide to Controlling Access to Your Code

Types of Access Modifiers in Java

There are four types of access modifiers in Java:

  • public
  • private
  • protected
  • Default (No Modifier)

Public Access Modifier

The public access modifier is the least restrictive of all access modifiers. A member declared as public can be accessed from any other class, regardless of its location. Here's an example:


public class MyClass {
  public int myPublicField;
  public void myPublicMethod() {
    // Do something here...
  }
}

In this example, the myPublicField and myPublicMethod() members are both declared with the public access modifier, which means they can be accessed from any other class in your program.

Private Access Modifier

The private access modifier is the most restrictive of all access modifiers. A member declared as private can only be accessed within the class in which it is declared. Here's an example:


public class MyClass {
  private int myPrivateField;
  private void myPrivateMethod() {
    // Do something here...
  }
}

In this example, the myPrivateField and myPrivateMethod() members are both declared with the private access modifier, which means they can only be accessed within the MyClass class.

Protected Access Modifier

The protected access modifier allows access to a member within the class in which it is declared, any subclasses of that class, and any other classes within the same package as that class. Here's an example:


public class MyClass {
  protected int myProtectedField;
  protected void myProtectedMethod() {
    // Do something here...
  }
}

In this example, the myProtectedField and myProtectedMethod() members are both declared with the protected access modifier, which means they can be accessed within the MyClass class, any subclasses of MyClass, and any other classes within the same package as MyClass.

Default Access Modifier

The default access modifier (no modifier) is the most restrictive access modifier within a package. A member declared with the default access modifier can be accessed within the class in which it is declared and any other classes within the same package as that class. Here's an example:


public class MyClass {
  int myDefaultField;
  void myDefaultMethod() {
    // Do something here...
  }
}

In this example, the myDefaultField and myDefaultMethod() members are both declared with the default access modifier, which means they can only be accessed within the MyClass class and any other classes within the same package as MyClass.

Best Practices for Access Modifiers

It is important to use access modifiers correctly in your code to ensure that your classes and methods are secure and well-organized. Here are some best practices for using access modifiers in Java:

  • Use the most restrictive access modifier that makes sense for each member.
  • Make instance variables private to control access to them.
  • Provide getter and setter methods to manipulate instance variables when necessary.
  • Avoid using public instance variables whenever possible.
  • Avoid using protected instance variables whenever possible, as they can lead to brittle subclassing.

Conclusion

Access modifiers in Java allow you to control the accessibility of members within a class. By using access modifiers correctly, you can create well-organized and secure code that is easier to read and maintain. Remember to use the most restrictive access modifier that makes sense for each member, and provide getter and setter methods to manipulate instance variables when necessary.

Comments