第十三条 使类和成员的可访问性最小化

  总得来说,我们应该尽量将成员的访问范围限制到最小!有利于解耦,开发、测试和优化都能够更加独立。

  对于成员(域,方法,嵌套类和嵌套接口),有四种可能的访问级别,访问范围从小到大:

访问控制符 同类 同包子类  同包其它类 不同包子类 不同包其它类
public
protected ×
默认 × ×
private × × × ×

另外,JAVA中的常量是全局访问的,public static final Integer VALUES_INTEGER = new Integer(10);

上面的VALUES_INTEGER是不可更改的,而公有的静态final数组是可以更改的:

public class MainTestJava {

    public static final Integer MAX_NUM = new Integer(10);
public static final Integer[] MAX_NUM_A = {new Integer(10),new Integer(10),new Integer(10)};
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer ii = new Integer(11);
MAX_NUM_A[1] = ii;//没有错误,可以赋值
MAX_NUM = ii;//有错误,不能赋值 } }

所以可以使用public的static final方法来获取数组的clone,将MAX_NUM_A置为private,不可更改

第十四条 在公有类中使用访问呢方法而非公有域

对于public的类,尽量不要让成员变量为public,而应该使用方法来访问: 如果类可以在包外访问(public),就应该提供访问方法,以保留将来改变该类内部表示法的灵活性。如果暴露了他的数据域,以后想要改变是不可能的。

如果类是包级别私有的(private,default),或者是私有的嵌套类,可以考虑暴露它的数据域,因为这些数据被限制在包中,如果有必要,不改变包外的任何代码而只改变内部数据表示法也是可以的。

最新文章

  1. .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]
  2. Oracle 建立索引及SQL优化
  3. web前端基础篇⑤
  4. Python:print显示颜色
  5. delphi数组作为参数传值
  6. 基于百度定位及天气获取的DEMO
  7. CMake使用教程
  8. 树莓PI交叉编译BOOST库(asio网络例子)
  9. lightoj 1021 - Painful Bases 状态压缩
  10. linux_shell_拆分文件_多进程脚本
  11. 你应该知道的jQuery技巧【收藏】
  12. word在线问题
  13. Java高级特性 第15节 解析XML文档(3) - JDOM和DOM4J技术
  14. Pinyin4j实战
  15. <HBase><Scan>
  16. linux 使用进程管理工具 supervisor
  17. [leetcode]Permutations @ Python
  18. java 中 enum 枚举的使用
  19. 【题解】洛谷P4707重返现世
  20. python中对list去重的多种方法

热门文章

  1. C#实现的对文件的重命名
  2. 如何使用poi在word表格中插入行的4种方法
  3. python条件判断语句
  4. Ambari下安装oozieUI界面无法访问问题
  5. django 调试工具 django-tool-bar
  6. 关于爬虫的日常复习(17)——scrapy系列2
  7. kubernetes基础概念知多少
  8. [洛谷P4178] Tree (点分治模板)
  9. sense8影评摘抄
  10. orm 锁 和 事务