封装:
封装的概念:
封装,又名信息隐藏,设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离开来;然后模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况.
为什么需要封装
- 封装可以有效的解除组成系统的各个模块之间的耦合关系, 使得这些模块可以独立开发,测试,优化,使用,理解和修改.
- 因为模块间的耦合程度低,这样程序员就可以并行开发,从而加快项目进展
- 可以更好的维护与优化,程序员可以集中精力理解某一模块后进行维护,在优化时,可以确认哪一模块影响了性能,并确定哪些模块可以被优化.
访问控制级别
- private:只有在声明该成员的顶层类内部才可以访问这个成员
- package-private(default):声明该成员的包内部的任何类都可以访问这个成员
- protected:声明该成员的类的子类可以访问这个成员,以及声明该成员的包内部所有类都可以访问这个成员
- public:所有对象都可以访问这个类
设计原则
- 尽可能地使每个类护着成员不被外界访问
- 实例域(field)决不能是公有的,因为一个非final的域(field)一旦设置为公有的,那么就放弃了对存储在这个field中的值进行限制的能力;也意味着放弃了强制这个类不可变的能力.同时当这个field被改变是,也失去了对它采取任何行动的能力.
- 同样静态域也不应该设为公有,除了当定义常量的时候