1. 程式人生 > >【java】關於interface成員變數的修飾符

【java】關於interface成員變數的修飾符

同學說,interface的成員變數只能被public static final修飾,但是我記得的看書說確實預設的修飾符是它們三個,也就是說你可以自己指定修飾符比如private什麼的。現在就來做個實驗看看到底什麼情況。

首先,來看看自己新增修飾符的情況:


顯然如同學所說,"only public, static & final are permitted".

其次,我們來看看究竟怎麼個【預設修飾符是那三個】法。

我們依次宣告三個成員變數:

public interface InterfaceTest {
	int a = 1;
	static int b = 2;
	final int c = 3;
}

編譯,看此類的位元組碼檔案:

// Compiled from InterfaceTest.java (version 1.8 : 52.0, no super bit)
public abstract interface ambigous.InterfaceTest {
  
  // Field descriptor #6 I
  public static final int a = 1;
  
  // Field descriptor #6 I
  public static final int b = 2;
  
  // Field descriptor #6 I
  public static final int c = 3;
}
可以看到,interface類的修飾符都預設為abstract,而且成員變數都被編譯器加上了public static final修飾符。