java的类应包括构造器、数据域、方法
而java类的封装特性所达到的目的大概有以下几点
1:方便使用者,用户只需要关注类的方法的效果、需要传入的数据和返回值即可,并不需要深入了解方法是怎样实现的
2:安全性,封装好的方法,修改数据域的方法是固定的,如果不调用特定的个方法是无法影响类自身的数据域的值,这样就是说调用同一个方法传入相同的参数,返回值是一样的
3:便于查错和修改
为了达到以上的目的,java程序员在设计类时,应该采用一下的构造
1:私有的数据域
2:公有的域访问器方法
【同时注意访问器方法不可返回引用,如果要返回引用,应该先clone
为什么不能直接返回引用要先clone呢?
这是因为引用是指向内存中的一个实例地址的,如果直接返回引用,那么对接受到引用的变量进行修改,就等同于直接修改类内部的私有变量,而我们设计类的域访问器方法的目的就是通过该方法调用者可以知道私有的数据域的值,但是不能直接修改类自己的值,如果要修改其值应该调用域更改器方法。
】
3:公有的域更改器方法
专门调用来改变类自身的私有的数据域,如果出现错误时,最有可能的是域更改器出现的问题,便于修改。
【方法可以访问所属类的私有特性,而不仅限于访问隐式参数的私有特性】