I understand that Interface methods are implicitly public
. Java Docs Tutorial says
All
abstract
,default
, and <
The language spec - specifically Section 9.4, states that abstract
and public
are implicit.
Every method declaration in the body of an interface is implicitly public (§6.6). It is permitted, but discouraged as a matter of style, to redundantly specify the public modifier for a method declaration in an interface.
An interface method lacking a default modifier or a static modifier is implicitly abstract, so its body is represented by a semicolon, not a block. It is permitted, but discouraged as a matter of style, to redundantly specify the abstract modifier for such a method declaration.
This is why IntelliJ warns you about it; by the JLS, you're doing something completely redundant.
As a bonus, fields in interfaces are implicitly public static final
:
Every field declaration in the body of an interface is implicitly public, static, and final. It is permitted to redundantly specify any or all of these modifiers for such fields.