我知道,这是一个愚蠢的问题,但是有人告诉我,我们可以在界面中编写代码,我的意思是不是逻辑而是System.out.println(),在界面中..
这是真的吗?
答案 0 :(得分:3)
不,在界面中你只声明方法(名称,参数)
答案 1 :(得分:3)
接口可以只有公共抽象方法和公共静态最终字段(常量)。它们不能具有:构造函数,静态块,块,非抽象方法,非公共方法,非静态最终字段。如果没有为字段键入public static final,或者为方法键入public,则编译器会为您添加它们。
答案 2 :(得分:2)
否强>
接口是简单的合同。
您只能拥有public
方法声明和public
,static
,final
字段
没有别的
答案 3 :(得分:2)
这是一个代码示例,您可以从界面中打印出一些东西,但它是糟糕的做法,我知道没有用例,它只是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();
}
}
(所使用的课程根本没有其他含义)
答案 4 :(得分:2)
有一件事已被遗忘,一个接口可以有静态类和接口,例如;
public interface MyInterface {
public static class Holder {};
}
修改强>
JLS声明,
接口可能包含成员类型 声明(第8.5节)。会员类型 接口中的声明是 隐含地静态和公开。
答案 5 :(得分:0)
这在界面中是不可能的。您可以声明可实现的方法或最终的静态常量。但定义常数并不是一种好的做法。
答案 6 :(得分:0)
接口纯粹是抽象类,只有最终变量,只有抽象方法,并且它没有任何构造函数。所以在一个接口中,你只能添加只有抽象方法和最终变量的方法声明。
答案 7 :(得分:0)
是的,你可以:
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,它将输出“Hi there!”
这是一个非常人为的例子,但在技术上是可行的。