The java code I\'m working on at the moment has often a structure like
file Controller.java:
interface Controller {...}
file Controller
Interfaces doesn't come from a desire to keep header files.
Interfaces the closest Java comes to supporting http://en.wikipedia.org/wiki/Design_by_contract