<p>Should methods in a Java interface be declared with or without the <code>public</code> access modifier?</p>

<p>Technically it doesn't matter, of course. A class method that implements an <code>interface</code> is always <code>public</code>. But what is a better convention?</p>

<p>Java itself is not consistent in this. See for instance <code>Collection</code> vs. <code>Comparable</code>, or <code>Future</code> vs. <code>ScriptEngine</code>.</p>

I always write what I would use if there was no interface and I was writing a direct implementation, i.e., I would use
```
public
```
.