在Java中,接口能否创建非静态变量?


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

由于所有方法都是抽象的,因此您无法实例化它。要使用它,您需要使用类实现此接口,并在其中为所有抽象方法提供主体。

接口中的非静态变量

不可以,您不能在接口中使用非静态变量。默认情况下,

  • 接口的所有**成员**(方法和字段)都是**public**的

  • 接口中的所有**方法**都是**public**和**abstract**的(静态和默认方法除外)。

  • 接口的所有**字段**默认情况下都是**public、static**和**final**的。

如果您声明/定义字段时没有使用 public 或 static 或 final 或所有三个修饰符,Java 编译器会代表您添加它们。

示例

在下面的 Java 程序中,我们有一个没有 public、static 或 final 修饰符的字段。

public interface MyInterface{
   int num = 40;
   void demo();
}

如果您使用以下所示的 javac 命令编译它:

c:\Examples>javac MyInterface.java

它将编译通过,没有任何错误。但是,如果您使用以下所示的**javap**命令在编译后验证接口:

c:\Examples>javap MyInterface
Compiled from "MyInterface.java"
public interface MyInterface {
   public static final int num;
   public abstract void demo();
}

您可以观察到,编译器已代表您在字段前添加了 public、static 和 final 修饰符。

更新于: 2020年6月29日

2K+ 浏览量

开启您的职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.