在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.