java類成員默認的可訪問性是什麼?你猜

先看下面TestModel:apache

import org.apache.commons.collections4.BidiMap;
import org.apache.commons.collections4.bidimap.DualHashBidiMap;

public class TestModel {
    BidiMap bidiMap = new DualHashBidiMap();

    BidiMap getBidiMap() {
        bidiMap.put("testkey","testvalue");
        return bidiMap;
    }
}

 

運行下面測試代碼,你猜結果會是什麼?編程

    @Test
    public void test() {
        TestModel testModel = new TestModel();
        System.out.println(testModel.bidiMap.size());
        testModel.getBidiMap();
        System.out.println(testModel.getBidiMap().getKey("testvalue"));
    }

 

結果是:測試

0
testkey

 

結論:spa

一個類的屬性和方法,在不加訪問修飾符的狀況下,可訪問性默認是public,————可不是private哦!    因此,在定義類成員時,注意使用修飾符來限定可訪問性。code

按照編程規範,將屬性定義成private的,即定義爲私有字段,而後經過get/set方法將其暴露出去。blog

諸如上面的TestModel,定義的就很差,可讀性差,容易給人形成誤解。bidiMap和getBidiMap()都能被外界訪問,那麼別人在使用TestModel時就會模棱兩可。get

相關文章
相關標籤/搜索