3

我在读一本书中的接口,我遇到了这行让我感到困惑。

接口在语法上类似于类,但它们缺少实例变量。

据我所知Interfaces,我们可以在默认情况下在接口内定义变量final

我的问题是,这是什么Line意思?Instance Variable和和有什么区别Variable defined in the Interface??

4

2 回答 2

3

我的问题是,那条线是什么意思?

除其他外,这意味着该书的术语已关闭。“实例变量”的意思是“实例字段”。

实例字段是特定于类的单个实例的字段。例如:

class Foo {
    // Instance field:
    private int bar;

    // Static field:
    public static final int staticBar;
}

该字段bar是每个实例的,而不是类范围的。该字段staticBar是类范围的(静态字段,有时称为“类字段”)。

接口没有实例字段。他们确实有静态字段。当你这样做时:

interface FooInterface {
    int staticBar;
}

staticBar自动声明public, static, 和final(根据 JLS §9.3 )。所以这staticBar大致相当于我们Foo班上的那个。

于 2015-12-06T15:39:15.980 回答
1

这意味着您不能根据JLS在接口中拥有实例变量,而是一个常量静态最终变量。例如

interface MyIface {
    public static final int MY_CONSTANT = 1;
}

并使用如下接口名称访问它:

int variable = MyIface.MY_CONSTANT;
于 2015-12-06T15:37:53.300 回答