A2oz

What is the difference between protected and default access modifier in Java?

Published in Java Access Modifiers 2 mins read

The main difference between the protected and default access modifiers in Java lies in their scope of accessibility:

  • Protected: Members declared as protected are accessible within the same package and by subclasses, regardless of their package.
  • Default: Members declared with the default (no explicit modifier) access modifier are accessible only within the same package.

Here's a table summarizing their key differences:

Access Modifier Accessibility
Protected Same package + Subclasses (regardless of package)
Default Same package only

Example:

Imagine you have two packages: packageA and packageB. packageA contains a class Parent with a protected method protectedMethod(). packageB contains a class Child that extends Parent.

  • Protected: Both Parent and Child can access protectedMethod(), even though they are in different packages.
  • Default: If protectedMethod() was declared with the default access modifier, only classes within packageA could access it. Child in packageB would not be able to access it.

Practical Insights:

  • Protected: Useful for enforcing a level of access control within a hierarchy while allowing subclasses to inherit and extend functionality.
  • Default: Good for encapsulating methods and variables within a specific package, limiting their visibility outside of that package.

In summary:

  • Protected provides greater accessibility than the default access modifier, allowing subclasses to access protected members regardless of their package.
  • Default restricts access to the same package, ensuring encapsulation within a specific code region.

Related Articles