effective java读书笔记 (二)

第四章 类和接口

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

信息隐藏(封装):设计模块时把它的API与它的实现清晰地隔离开来

封装的带来的好处:有效地接触组成系统的各模块之间的耦合,同时减轻了维护的负担,并且可以有效地调节性能,还可以提高软件的可重用性,也降低了构建大型系统的风险。

java中提供的协助信息隐藏的机制:访问控制机制决定了类、接口和成员的可访问性。对于顶层(非嵌套的)的类和接口,只有两种可能的访问级别:包级私有的和公有的

 而对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别,按照可访问性的递增顺序罗列如下:

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

包级私有(default):声明该成员的包内部的任何类都可以访问这个成员

受保护的(protected)声明该成员的类的子类可以访问

公有的(public)在任何地方都可以访问该成员

尽可能使每个类或者成员不被外界访问

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

如果方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于超类中的访问级别,这样可以保证任何可使用超类的地方都可以使用子类的实例。这条规则的特殊情形:如果一个类实现了一个接口,那么接口中的所有方法在这个类中也都必须声明为公有的

总之,应该始终尽可能的降低可访问性,当在仔细的设计了一个最小的公有API后,应该防止把任何散乱的类、接口和成员变成API的一部分,除了共有静态final域的特殊情形外,公有类不应该包含公有域,并且要确保公有静态final域所引用的对象是不可变的


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

公有类永远都不应该暴露可变的域,有时候可以让公有类暴露不可变的域,有时候需要用包级私有或者私有的嵌套类来暴露域,无论类是可变或者不可变


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值