1. 程式人生 > >解析面試題-介面中的成員變數為什麼要定義成public static final

解析面試題-介面中的成員變數為什麼要定義成public static final

這是哥們在看面試題時問我的,有人說這樣的問題沒有意義,也有人說這樣的問題只要具備夯實的基礎就會戳破這個紙老虎

先說下這個問題吧

為什麼要把介面中的成員變數定義為public static final

首先看下介面的定義:

介面是從多個相似類中抽象出來的規範,介面不提供任何實現

public 這個是肯定的,要讓多個類來實現 必須是public的 不然你自己還不能例項化 要變數養著玩嗎?記憶體都不惜的搭理……

static 這個也是肯定的,介面是不會例項化的,也就是說不會在記憶體中開闢空間,而static 在一載入類的時候就會被分配記憶體 介面自己在記憶體中沒地盤,static還要地盤,矛盾

final 這個也是必須的 介面是規範,規則是你說變就變嗎?如果任何去implement的類都去改變這個變數 那還是規範嗎 況且java也會防止這種變態的行為

在介面的實現類中呼叫介面的static常量

public interface A{

public static final int i = 20;

}

public class Test implements A{

public static void main(){

Test t = new Test();

int j = A.i;

System.out.println(j);

}

}

兩方面看吧:

1 程式設計就按照規則去做,不知道為什麼非要通過不對的來考察對的知識點

2 要說考 也有道理,只要概念清,原理通 解決這個問題也是很輕鬆的。