Devrais-je mettre une interface publique dans un fichier séparé?

J'ai le code suivant:

import com.apple.dnssd.*;

public interface IServiceAnnouncer {
    public void registerService();
    public void unregisterService();
    public boolean isRegistered();
}

class HelloWorld {
        public static void main(String[] args) {
                System.out.println("Hello, World!");
        }
}

Ce code est enregistré dans un fichier appelé "HelloWorld.java". Le compilateur Java se plaint de ce code. Il écrit que la classe IServiceAnnouncer est public et il doit être déclarée dans un fichier appelé "IServiceAnnouncer.java".

J'ai plusieurs questions à ce sujet:

  1. Pourquoi le compilateur dire que IServiceAnnouncer est une classe? C'est une interface. Interface ou partielle cas d'une classe?
  2. Si je mets de l'interface IServiceAnnouncer dans un fichier séparé appelé "IServiceAnnouncer.java" (comme le compilateur veut), alors comment puis-je l'utiliser à partir de l' "HelloWorld.java"?
  3. Ce n' public interface veux dire? Quelle est la différence entre une interface publique et non publique?

source d'informationauteur Roman | 2010-03-05