术语"实例变量"之间的差异和"在接口"

时间:2015-12-06 15:34:43

标签: java variables interface instance-variables member-variables

我正在阅读一本书中的界面,我遇到了困扰我的这条线。

  

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

据我所知Interfaces,我们可以在接口内定义默认为final的变量。

我的问题是,Line是什么意思? Instance VariableVariable defined in the Interface ??

之间有什么区别?

2 个答案:

答案 0 :(得分:3)

  

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

除此之外,这意味着该书的术语已经关闭。通过"实例变量,"他们的意思是"实例字段。"

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

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

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

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

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

interface FooInterface {
    int staticBar;
}

staticBar会自动声明为publicstaticfinal(根据JLS §9.3)。因此,staticBar大致相当于我们之前Foo类中的{。}}。

答案 1 :(得分:1)

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

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

使用接口名称访问它,如:

int variable = MyIface.MY_CONSTANT;