well methods are public as they are meant to be overridden. If they had package visibility by default, then any class outside the package of the interface class would not be able to implement that interface as it will not override that method.
methods are not static as they can't have any body. If you remember, methods of an interface are abstract by default, and abstract modifier cannot be used with static, final private etc...
Hi, Interfaces are meant for the outside world. They should ideally contain no implementation and should only contain the method names and declarations. Think if the methods in the interface had been private or had package access, how should the outside world know which method to implement? That would violate the very rule of interfaces isnt it?
Preparing for SCJP 6.0
subject: why members of an interface are public by default?