2015070508 - EffactiveJava笔记 - 第13条 使类和成员的可访问性最小(2)

来源:互联网 发布:路由器做淘宝客 编辑:程序博客网 时间:2024/06/07 08:38

   Java那些机制完成信息隐藏呢?

   1.访问控制决定类,接口,成员的可访问性;

   2.对象的可访问性由该对象声明所在的位置,以及修饰对象的访问控制修饰符共同决定.

 

   第一规则:尽可能使每个类或者成员不被外界访问.(要做大家闺秀,不需要所有的人知道你,必要几个知道你即可!  尽可能最小的访问级别!)

   顶层(非嵌套,应该是内部类)类和接口,只有两种访问级别:包级私有(package)和公开(public)的.

   被public修饰顶层类或者接口,那它就是共有的.你就有责任永远支持它,保持它们的兼容性.(感触:如果你的类和接口只在内部使用,千万不要设置为共有,防止其他人使用,一旦别人使用,你修改起来非常棘手!)

   包级私有的类和接口,它就是包实现内容,而不是该包导出API的组成,在以后发行版本中可以修改,替换或者删除,无需担心影响现有客户端.(感触:从此处可以看出,模块升级到包级别!)

   如果一个包级私有的顶层类(或者接口)只在某个类内部被用到,应该考虑使它成为使用它的类的内部类.

   好处在于它的访问级别从包内所有类降低到类内部,降低不必要共有类的可访问性,比降低包级私有的顶层类更重要.因为共有类是包的API,而包级私有的顶层类则是包的实现部分.

 

    成员,属性,方法,内部类,内部接口四种访问级别.

                       类        包         子类            公共

    private            是        否         否               否

    包                 是        是         否               否

    protected          是        是         是               否

    public             是        是         是               是


    private,只有在声明该成员的类内部才可以访问这个成员;

    包级私有,(修饰符什么都没有),声明该成员的包内部的任何类都可以访问这个成员;

    protected,声明该成员的类的子类可以访问这个成员,该成员的包内部的任何类同样可以访问这个成员

    public,在任何地方都可以访问该成员.

0 0
原创粉丝点击