我们可以将Java接口的变量声明为私有和受保护吗?

Java中的接口类似于类,但是它仅包含final和static的抽象方法和字段。

接口的私有字段

如果接口的字段是私有的,则不能在实现类中访问它们。

如果尝试将接口的字段声明为私有,则会生成编译时错误,提示“此处不允许使用修改器私有”。

示例

在下面的Java示例中,我们试图将接口的字段和方法声明为私有。

public interface MyInterface{
   private static final int num = 10;
   private abstract void demo();
}

编译时错误

编译时,上面的程序生成以下错误

输出结果

MyInterface.java:2: error: modifier private not allowed here
   private static final int num = 10;
                          ^
MyInterface.java:3: error: modifier private not allowed here
   private abstract void demo();
^
2 errors

接口的保护字段

通常,可以在同一类或继承该类的类中访问受保护的字段。但是,我们不继承将要实现的接口。

因此,不能声明接口的字段受保护。如果尝试这样做,则会生成一个编译时错误,提示“此处不允许使用修改器保护”。

示例

在下面的Java示例中,我们尝试声明受保护接口的字段和方法。

public interface MyInterface{
   protected static final int num = 10;
   protected abstract void demo();
}

输出结果

MyInterface.java:2: error: modifier protected not allowed here
   protected static final int num = 10;
^
MyInterface.java:3: error: modifier protected not allowed here
   protected abstract void demo();