【java】關於interface成員變數的修飾符
阿新 • • 發佈:2018-12-30
同學說,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; }
編譯,看此類的位元組碼檔案:
可以看到,interface類的修飾符都預設為abstract,而且成員變數都被編譯器加上了public static final修飾符。// 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; }