我是靠谱客的博主 成就招牌,最近开发中收集的这篇文章主要介绍java类成员默认是什么_java类成员的默认可访问性是什么?你猜,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先看下面TestModel:

importorg.apache.commons.collections4.BidiMap;importorg.apache.commons.collections4.bidimap.DualHashBidiMap;public classTestModel {

BidiMap bidiMap= newDualHashBidiMap();

BidiMap getBidiMap() {

bidiMap.put("testkey","testvalue");returnbidiMap;

}

}

运行下面测试代码,你猜结果会是什么?

@Testpublic voidtest() {

TestModel testModel= newTestModel();

System.out.println(testModel.bidiMap.size());

testModel.getBidiMap();

System.out.println(testModel.getBidiMap().getKey("testvalue"));

}

结果是:

0testkey

结论:

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

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

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

(4)补充(1):默认可访问性既然不是private,那是什么?——————是protected。怎么理解这个protected呢?首先是可以在派生类是可见的,其次呢,是在当前package下也是可见的。上面的test方法,就要求与TestModel在同一个package下。否则,编译器会编译不通过,会提示错误:'bidiMap' is not public in 'package1.TestModel'. Cannot be accessed from outside package.

最后

以上就是成就招牌为你收集整理的java类成员默认是什么_java类成员的默认可访问性是什么?你猜的全部内容,希望文章能够帮你解决java类成员默认是什么_java类成员的默认可访问性是什么?你猜所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部