Effective Java读书笔记-13

使类和成员的可访问性最小化

设计良好的模块,对于外部的其它模块,隐藏了内部数据和实现细节,把API和实现清晰的隔离开来。
这样的好处是可以有效的解除模块的耦合关系,是模块可以独立的开发、测试、优化,加速开发。

  • 尽可能使每个类或者成员不被外界访问。
    私有的(private):只有在声明该成员的顶层类内部才可以访问这个成员。
    包级私有(package-private):声明该成员的包内部的任何类都可以访问这个成员。这也被称为“缺省(default)访问级别”,如果没有为成员指定访问修饰符,就采用这个访问级别。
    受保护的( protected):允许子类及所在包的类都允许访问。
    公有的(public):任何地方都可以访问。
  • 类如果实现了Serializable接口,那么这些域就有可能会被泄露到导出的API中
  • 如果方法覆盖了超类中的一个方法,那么子类中的访问级别不允许低于超类中的访问级别
  • 实例域是不能公有的。同样的建议适用于静态域。只有一种例外,公有的静态final域暴露常量,惯例是用大写字母+下划线构成

嵌套类
静态嵌套类:不能访问外部类的非静态成员,很少使用
非静态嵌套类(内部类),再可以分为以下三类。内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。 内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的。
一个类中直接定义
一个方法中定义
匿名内部类

原文:大专栏  Effective Java读书笔记-13


猜你喜欢

转载自www.cnblogs.com/petewell/p/11614909.html