The abstract modifier is redundant on an interface. All interface methods are implicitly public and abstract. All interface fields are implicitly public, static and final. All interface classes are implicitly public and static. To explicitly specify any of these modifiers is poor form and results in death by firing squad (in a perfect world).
every method in an interface is abstract by default. just like every variable in interface is "public static final" whether you declare it or not.. every method has to be "public abstract ". you cannot have static or final methods in interface. you cannot have protected abstract method in interface
but in abstract class ... you can have a abstract method which can be protected, default or public.
i hope this answers your doubt regards anuj
SCJP 1.4, SCWCD 1.4
your eyes cannot see what your mind does not know
You posted that "All interface classes are implicitly public and static"
Is that correct? The interface itself is certainly not static. Did you mean "public and abstract"? Or do you mean that whether you specify the static keyword or not when declaring an interface, the implementing class will be static? Does that make sense too?
I think when Tony said "interface classes", he meant nested classes defined in interfaces. Those are implicitly public and static. The same would be true for interfaces nested inside other interfaces. However interfaces which are not nested in other interfaces are not implicitly public or static. Nor are classes which extend such interfaces.