我一直想知道为什么允许在接口中执行代码实现,当接口被假定为不包含代码实现时:
public interface someInterface{
String someString = "example";
}
我可以使类实现此接口,而不会出现错误:
public class someClass implements someInterface
怎么回事?
答案 0 :(得分:8)
您可以在接口中声明常量,这就是您所做的。您尚未实现代码。
接口中声明的变量是隐式声明的public static final
。
JLS, Section 9.3,涵盖了这个:
接口主体中的每个字段声明都是隐式的 公共,静态和最终。允许冗余指定任何 或者所有这些领域的修饰语。
答案 1 :(得分:0)
没有严格的条件,接口必须有签名方法。记住在java中也有标记接口。
其次,您可以在接口内声明变量。
该变量someString
已在static context
中分配,并在implemntations
interface
内共享
重点是声明的interface
内的变量是隐式的static
和最终的。你可以使用它们。
答案 2 :(得分:0)
接口在类和外部世界之间形成契约,并且该合同在构建时由编译器强制执行。如果您的类声称实现了一个接口,那么该接口定义的所有方法必须在其成功编译之前出现在其源代码中。
在这里你没有定义任何实现的方法。所以你没有在这里得到任何错误。