This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
You can use interfaces to influence package dependencies. Say I want to write a new Swing listener. I must implement an interface defined by Swing. So I depend on Swing, even though Swing is calling me. It would be very bad if Swing depended on me and had to release an update to Swing for every new listener I wrote! The Dependency Inversion Principle of OO design is all about this. That link is to something I wrote, which in turn has a link to Rober Martin's golden font of wisdom.
A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi