Java Reference
In-Depth Information
If the private instance variables name and hireDate had been marked protected in
the class Employee , the definition of toString in the derived class HourlyEmployee
could be simplified to the following:
public String toString() //Legal if instance variables in
// Employee are marked protected
{
return (name + " " + hireDate.toString()
+ "\n$" + wageRate + " per hour for " + hours + " hours");
}
The protected Modifier
If a method or instance variable is modified by protected (rather than public or
private ), then it can be accessed by name inside its own class definition, by name inside
any class derived from it, and by name in the definition of any class in the same package.
The protected modifier provides very weak protection compared to the private
modifier, because it allows direct access to any programmer who is willing to go
through the bother of defining a suitable derived class. Many programming authorities
discourage the use of the protected modifier. Instance variables should normally not
be marked protected . On rare occasions, you may want to have a method marked
protected . If you want an access intermediate between public and private , then the
access described in the next paragraph is often a preferable alternative to protected .
You may have noticed that if you forget to place one of the modifiers public ,
private , or protected before an instance variable or method definition, then your
class definition will still compile. If you do not place any of these modifiers before
an instance variable or method definition, then the instance variable or method can
be accessed by name inside the definition of any class in the same package, but not
outside of the package. This is called package access , default access , or friendly access .
Use package access in situations where you have a package of cooperating classes that act
as a single encapsulated unit. Note that package access is more restricted than protected ,
and that package access gives more control to the programmer defining the classes. If you
control the package directory (folder), then you control who is allowed package access.
The diagram in Display 7.9 may help you to understand who has access to members
with public, private, protected, and package access. The diagram tells who can directly
access, by name, variables that have public, private, protected, and package access. The
same access rules apply to methods that have public, private, protected, and package access.
 
Search WWH ::




Custom Search