Java那些机制完成信息隐藏呢?
1.访问控制决定类,接口,成员的可访问性;
2.对象的可访问性由该对象声明所在的位置,以及修饰对象的访问控制修饰符共同决定.
第一规则:尽可能使每个类或者成员不被外界访问.(要做大家闺秀,不需要所有的人知道你,必要几个知道你即可! 尽可能最小的访问级别!)
顶层(非嵌套,应该是内部类)类和接口,只有两种访问级别:包级私有(package)和公开(public)的.
被public修饰顶层类或者接口,那它就是共有的.你就有责任永远支持它,保持它们的兼容性.(感触:如果你的类和接口只在内部使用,千万不要设置为共有,防止其他人使用,一旦别人使用,你修改起来非常棘手!)
包级私有的类和接口,它就是包实现内容,而不是该包导出API的组成,在以后发行版本中可以修改,替换或者删除,无需担心影响现有客户端.(感触:从此处可以看出,模块升级到包级别!)
如果一个包级私有的顶层类(或者接口)只在某个类内部被用到,应该考虑使它成为使用它的类的内部类.
好处在于它的访问级别从包内所有类降低到类内部,降低不必要共有类的可访问性,比降低包级私有的顶层类更重要.因为共有类是包的API,而包级私有的顶层类则是包的实现部分.
成员,属性,方法,内部类,内部接口四种访问级别.
类 包 子类 公共
private 是 否 否 否
包 是 是 否 否
protected 是 是 是 否
public 是 是 是 是
private,只有在声明该成员的类内部才可以访问这个成员;
包级私有,(修饰符什么都没有),声明该成员的包内部的任何类都可以访问这个成员;
protected,声明该成员的类的子类可以访问这个成员,该成员的包内部的任何类同样可以访问这个成员
public,在任何地方都可以访问该成员.