Java Access Modifiers – Scope of Protected Members

access-modifiersjava

Iam preparing for SCJP , also i came to know that protected members scope is within the package as well as in other package with some conditions like possible only with inheritance.

For example :
i have three classes as Parentclass Childclass Friendclass

package x.parent;

 class Parentclass{
 protected int x=10;
  ...............
  }

 package x.child;

 class Childlass extends Parentclass{
  super.x=20;
  ...............
}

 package x.child;

 import x.parent.Parentclass;

 class Friendclass{
 Parentclass pc = new Parentclass();
 pc.x=30;
  ...............
}

Whats the reason behind that, in Friendclass the member x will not accept to assign a value to that, behaves as private member not in case of Childclass.

Best Answer

There are four access modifiers

private - just this class
no modifier - just this class or this package (NOT subclass)
protected - just this class, this package, or subclass
public - everyone and their cousin

Since it uses the default modifier, it has access if one of the following is true:

  1. Is part of the class itself (Nope!)
  2. Is part of the package of the class itself (Nope!)

So it fails the criteria, and so you don't get access.

Related Question