Java Reference
In-Depth Information
class Point {
Point() { setMasterID(); }
int x, y;
private int ID;
private static int masterID = 0;
private void setMasterID() { ID = masterID++; }
}
the private members
ID
,
masterID
, and
setMasterID
may be used only within the body of
class
Point
. They may not be accessed by qualified names, field access expressions, or
method invocation expressions outside the body of the declaration of
Point
.
6.6.2. Details on protected Access
A
protected
member or constructor of an object may be accessed from outside the package in
which it is declared only by code that is responsible for the implementation of that object.
6.6.2.1. Access to a protected Member
Let
C
be the class in which a
protected
member is declared. Access is permitted only within
the body of a subclass
S
of
C
.
In addition, if
Id
denotes an instance field or instance method, then:
• If the access is by a qualified name
Q.Id
, where
Q
is an
ExpressionName
, then the
access is permitted if and only if the type of the expression
Q
is
S
or a subclass of
S
.
• If the access is by a field access expression
E.Id
, where
E
is a
Primary
expression,
or by a method invocation expression
E.Id
(. . .)
, where
E
is a
Primary
expression,
then the access is permitted if and only if the type of
E
is
S
or a subclass of
S
.
More information about access to
protected
members can be found in
Checking
Access to Protected Members in the Java Virtual Machine
by Alessandro
Coglio, in the
Journal of Object Technology
, October 2005.
6.6.2.2. Qualified Access to a protected Constructor
Let
C
be the class in which a
protected
constructor is declared and let
S
be the innermost
class in whose declaration the use of the
protected
constructor occurs. Then: