Interface variables are static because Java
interfaces cannot be instantiated in their own right; the value of the variable
must be assigned in a static context in which no instance exists. The final
modifier ensures the value assigned to the interface variable is a true
constant that cannot be re-assigned by program code.
public: for the
accessibility across all the classes, just like the methods present in the
interface
static: as interface cannot have an object,
the interfaceName.variableName can be used to reference it or directly the
variableName in the class implementing it.
final: to make them constants. If 2 classes
implement the same interface and you give both of them the right to change the
value, conflict will occur in the current value of the var, which is why only
one time initialization is permitted.
Also all these
modifiers are implicit for an interface, you dont really need to specify any of
them.