一、问题引入
在程序的设计中,我们普遍的定义一个private变量,然后为这个变量加上get() 、set()方法,那为何不直接定义一个public变量呢?
很多人是这样回答的:
1、关系到安全性的问题,貌似具有说服力。但是,使用pubilc变量有何不安全呢?使用get()和set()安全在哪里呢?
2、有些人回答是java良好的封装性。
我的理解这一方法更多的作用是数据输入输出的控制。
二、get()和set()作用
(1)、安全性
程序可以选择只读或者只写 或者读写都行。
定义了一个圆类,定义了属性半径和π,半径只提供写的方法,但不提供读,而π只提供读,但不能写,并提供了一个计算周长的方法getC。在实际项目中,对一些类的设计时,严谨的设计是要考虑哪些类是只读或是只写的。
(2)、灵活性
如在定义一个Person类时,设置一个属性name,当取名字的时候,不只是显示名字,代码如下:
(3)、封装性
通过将类的成员变量声明为私有的(private),再提供一个或多个共有(public)方法实现对该成员变量的访问或修改,这种方法就被称为封装。
实现封装可以达到如下目的:
1、隐藏类的实现细节;
2、让使用者只能通过事先定制好的方法来访问数据们,可以方便地加入控制逻辑,限制对属性不合理操作;
3、便于修改,增强代码的可维护性;
4、可进行数据检查
(4)、健壮性
其实java中对外提供访问方式,就是因为可以在访问方式中加入逻辑判断等语句,对访问的数据进行操作。提高代码的健壮性。
简单小例子:
总结
一个类通常就是一个小的模块,我们应该让模块仅仅公开必须要让外界知道的内容,而隐藏其他一切内容。在进行程序的详细设计时,应尽量避免一个模块总结修改或操作另一个模块的数据,模块设计追求强内聚(许多功能尽量在类的内部独立完成,不让外面干预),弱耦合(提供给外部尽量少的方法调用)。
网友评论