Interfaces are visible for a client package if the server package is not hidden within its server's superpackages and also the interface's access control list does not exclude the client. This means that an interface's visibility is controlled by the server-side interfaces, packages, and superpackages.
An interface is usable if it is visible and if the client package and its superpackages allow access through their dependency control lists. This means that an interface's usability is controlled by the client side.
Package interfaces of the following are visible to a client package:
However, a package interface with Access Control Lists not including the package is not visible.
The following example illustrates the visibility of package interfaces. The shaded package is the one concerned.