0

I've been wondering why it's allowed to do a code implementation in an interface, when interfaces are suppossed to contain no code implementation:

public interface someInterface{
String someString = "example";   
}

I can make a class implement this interface, without getting an error:

public class someClass implements someInterface

How come?

4

3 回答 3

8

您可以在接口中声明常量,这就是您所做的。您还没有实现代码。

接口中声明的变量是隐式声明的public static final

JLS 第 9.3 节涵盖了以下内容:

接口主体中的每个字段声明都是隐式公共的、静态的和最终的。允许为这些字段冗余地指定任何或所有这些修饰符。

于 2013-08-29T18:39:41.183 回答
0

接口必须有签名方法没有严格的条件。记住在java中也有标记接口。

其次,您可以在接口内声明变量。

并且该变量someString分配在 a中并由该变量static context 共享implemntationsinterface

关键是声明的变量interface是隐式static和最终的。你可以使用它们。

于 2013-08-29T18:39:31.457 回答
0

根据java文档

接口在类和外部世界之间形成了一个契约,并且这个契约在编译时由编译器强制执行。如果您的类声称实现了一个接口,则该接口定义的所有方法都必须出现在其源代码中,然后该类才能成功编译。

在这里你没有定义任何方法来实现。所以你在这里没有得到任何错误。

于 2013-08-29T18:43:40.977 回答