访问控制(或者隐藏具体实现)与“最初的实现并不恰当即重构”有关
由于重构的原因(使得代码更加容易理解、更可读),需要对代码进行改动,但是通常总有一些消费者(即客户端程序员)需要你的代码在X些方面保持不变(即类库的更新不能影响到消费者程序的执行),所以产生了面向对象设计中一个基本问题:怎么将变动的部分和不变动的部分区分开来;
为了解决这个问题,第一个方法是通过约定来达到,即类库开发者必须向消费者保证不得删除任何现有方法,但是在有域存在的情况下,类库开发者怎么才能知道哪些域已经被客户端所调用呢?
第一种方法显然不可行,限制了类库开发者的开发;所以出现了访问权限修饰词,类库开发者通过它向客户端程序员指出哪些是可变的、哪些是不可变的;但是按照这种方式(只有private和public),如果客户端不能调用方法或域的话,那么类库开发者也不能调用这个方法或域了。。。所以出现了Java的package,它提供了default权限修饰符,即一个包内的类可以访问由default修饰的域或方法,包之外的类就不可以访问default修饰的域或方法了。这样就将类库开发者和类库使用者(消费者)设立了界限-即谁可以访问谁,谁不可以访问谁。
package还有几个好处:
1、包名+类名构成了类的全名,保证了类名的唯一性
2、将包名按点拆分成路径存储在电脑上,防止了”同类名 “的类文件覆盖问题
package注意事项:1、必须放在的第一行(
除了注释和空行之外)
以上内容从Java编程思想第四版总结而来,各位大牛有什么意见可以提出来
,欢迎交流~~~
以上内容从Java编程思想第四版总结而来,各位大牛有什么意见可以提出来
![大笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)