Suppose a
Java programmer hands out a library for another programmer to use. This second programmer has to use the library from package that is not the same in which the library resides.
The public interface of the objects created from classes in that library is compound only by public members. The members that are friendly can not be called by the programmer that received the library. The members that are protected can not either. But, they could be called from the subclases of the library that the second programmer happens to create.