[英]General question about interfaces
我知道,这是一个愚蠢的问题,但有人告诉我,我们可以在接口中编写代码,我的意思不是逻辑,而是 System.out.println(),在接口中。
这是真的??
不,在接口中你只声明方法(名称,参数)
接口可以只有公共抽象方法和公共 static 最终字段(常量)。 他们不能有:构造函数、static 块、块、非抽象方法、非公共方法、非 static 最终字段。 如果您没有为字段输入 public static final,或者为方法输入 public,编译器会为您添加它们。
不
接口是普通的合同。
你只能有public
方法声明和public
, static
, final
fields 没有别的
这是一个代码示例,您可以在其中从界面中打印一些东西,但这是不好的做法,我知道没有用例,它只是 Java 令人费解:
public interface NewClass {
HashMap x = new HashMap() {{
System.err.println("print me");
}};
}
public class Test implements NewClass{
public static void main(String[] args) {
x.clear();
}
}
(使用的类根本没有进一步的意义)
有一件事忘记了,一个接口可以有static类和接口,比如;
public interface MyInterface {
public static class Holder {};
}
编辑
JLS 指出,
接口可能包含成员类型声明(第 8.5 节)。 接口中的成员类型声明隐式为 static 和公共。
这在接口中是不可能的。 您可以声明可实现的方法或最终的 static 常量。 但是定义常量并不是一个好习惯。
接口是纯粹的抽象 Class 它只有最终变量,只有抽象方法,它没有任何构造函数。 因此,在接口中,您只能添加仅是抽象方法和最终变量的方法声明。
是的你可以:
public interface DoStuff {
public class Worker {
public void work() {
System.out.println("Hi there!");
}
}
}
import DoStuff.Worker;
public class Main {
public static void main(String[] args) {
Worker worker = new Worker();
worker.work();
}
}
如果您运行 Main 它将 output “您好!”
这是一个非常人为的例子,但在技术上是可行的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.