Indra, anything preceeded by a static modifier belongs to a class. So, there has to be a top level class to which that particular component, code is assigned.
Interfaces are used to define the skeleton of a class. So, there is no point in accessing it except for proxy, be it an instance or static way of accessing.
Method local inner class, local variables are declared inside a method. Hence, their scope is just within the method and their access to the encircling class is very limited.
Instance variables are funny because if you add a 'static' modifier to it, it is no longer an instance variable..