As Satyapriya said, interface members are implicitly public (it would make no sense for them to be anything else) and so using an access modifier would be pointless and it's a compiler error to do so.
However, when a class implements an interface, it is necessary to designate the implemented members as 'public' unless you are implementing them explicitly when again no access modifiers are permitted. In the latter case, they are implicitly public but can only be accessed through an interface reference, not through a reference to the class itself.