java类成员的默认可访问性是什么?你猜

JAVA学习网 2019-11-11 21:01:01

先看下面TestModel:

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

 

结论:

(1)一个类的属性和方法,在不加访问修饰符的情况下,可访问性默认是public,————可不是private哦!    所以,在定义类成员时,注意使用修饰符来限定可访问性。  按照编程规范,将属性定义成private的,即定义为私有字段,然后通过get/set方法将其暴露出去。

(2)从上面案例可以看出来,直接访问TestModel的bidiMap时,与getBidiMap()无关,jvm并不会执行这个get方法。

(3)诸如上面的TestModel,定义的就不好,可读性差,容易给人造成误解。bidiMap和getBidiMap()都能被外界访问,那么别人在使用TestModel时就会模棱两可。

 

阅读(2327) 评论(0)