I have the following code:

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!");
        }
}

This code is saved in a file called "HelloWorld.java". The Java compiler complains about this code. It writes that the class IServiceAnnouncer is public and it should be declared in a file called "IServiceAnnouncer.java".

I have several questions about this:

  1. Why would the compiler say that IServiceAnnouncer is a class? It's an interface. Or interface is a partial case of a class?

  2. If I put the interface IServiceAnnouncer in a separate file called "IServiceAnnouncer.java" (as the compiler wants), how then can I use it from the "HelloWorld.java"?

  3. What does public interface mean? What is the difference between a public interface and non-public one?

Edit
Report