Rom*_*man 9 java interface public
我有以下代码:
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!");
}
}
Run Code Online (Sandbox Code Playgroud)
此代码保存在名为"HelloWorld.java"的文件中.Java编译器抱怨这段代码.它写道该类IServiceAnnouncer
是公共的,它应该在一个名为"IServiceAnnouncer.java"的文件中声明.
我有几个问题:
为什么编译器会说这IServiceAnnouncer
是一个类?这是一个界面.或者接口是一个类的部分情况?
如果我将接口IServiceAnnouncer
放在一个名为"IServiceAnnouncer.java"的单独文件中(正如编译器所希望的那样),那么我怎样才能从"HelloWorld.java"中使用它?
什么public interface
意思?公共界面和非公共界面有什么区别?
Bri*_*new 16
你应该把它放在一个单独的文件中.这样,在不知道实现细节或不得不拖入相关依赖项的情况下,交换不同的实现,或者让其他人可以使用接口(系统的API)进行编码是更容易的.
例如,通用Java API的实现 - 例如servlet - 将具有针对Sun提供的接口包编码的实现(在这种情况下javax.servlet
)
你如何从实施中使用它?通过导入它.如果它在同一个包中并且您正在同时编译所有接口/实现,则这是不必要的.
请注意,接口以与实现相同的方式(使用您定义的内容class
)编译为.class文件.
这些答案在正确的答案周围跳舞。
在 Java 中在一个文件中声明多个类是很奇怪的,即使你可以。不要这样做。
您将 IServiceAnnouncer 放在一个单独的文件中,并在 HelloWorld.java 中导入类名。您只需同时编译它们,将两个文件名传递给 javac。这一切都有效。
公共接口,就像 Java 中的任何其他公共接口一样,是一种可以从任何其他类中看到和使用的类型。如果没有“public”,它的可见性称为包私有,这意味着只有同一个包中的东西才能使用它。
归档时间: |
|
查看次数: |
16078 次 |
最近记录: |