解析面試題-介面中的成員變數為什麼要定義成public static final
阿新 • • 發佈:2019-02-01
這是哥們在看面試題時問我的,有人說這樣的問題沒有意義,也有人說這樣的問題只要具備夯實的基礎就會戳破這個紙老虎
先說下這個問題吧
為什麼要把介面中的成員變數定義為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 要說考 也有道理,只要概念清,原理通 解決這個問題也是很輕鬆的。