java 对类中的属性使用set/get方法的作用
2013-07-17 16:22
591 查看
经常看到有朋友提到类似:对类中的属性使用set/get方法的作用?理论的回答当然是封闭性之类的,但是这样对我们有什么作用呢?为什么要这样设计?我直接使用属性名来访问不是更直接,代码更简洁明了吗?下面我们就来介绍下为什么要使用set/get方法来代替直接访问属性。
1.灵活性
比如我们有一个Person类,我们给它设置一个属性name,但是我们希望在取名字的时候,不是只显示名字,而是把名字按我们的要求输出,比如”我的名字叫XX”,代码如下:
如上代码,以后我们只要定义一个person对象,并给他setName(xx),再getName的时候,就会显示我的名字叫XX。在实际业务中还可以有更灵活的运用,这里就不举例了。
2.安全性。
比如我们的操作系统在新建用户或在共享文件的时候,经常会提示对针对某个用户的权限是什么,是只读还是只写还是可读写,这里的读写就好比get/set。对于类来说,如果不使用set/get方法,直接用public定义某个属性,那么这个属性是可读可写的,如果你希望一个类的某个属性是只能读取,不能写入的时候,上面用public定义某个属性就不能满足了,但是我们可以使用private定义属性,再定义一个get方法,但是不定义set方法来实现。反之,只定义set,不定义get则表示该属性是只写不能读的。举个简单的例子,如下代码。
我们定义了一个圆类,定义了属性半径和pai,半径我只提供写的方法,但是不提供读,而pai只提供读,但不能写,并提供了一个计算周长的方法getC。在实际项目中,对一些类的设计时,严谨的设计是要考虑哪些类是只读或是只写的。
set/get的方法作用当然不只这些,实际项目中的用法有很多,比如对某个类升级,有一个属性的Type变化了,只要set/get的Type不变就不会影响到以前的代码。更多的用法只能在使用中多体会了。
1.灵活性
比如我们有一个Person类,我们给它设置一个属性name,但是我们希望在取名字的时候,不是只显示名字,而是把名字按我们的要求输出,比如”我的名字叫XX”,代码如下:
public class Person { private String name; public String getName() { return "我的名字叫" + name; } public void setName(String name) { this.name = name; } }
如上代码,以后我们只要定义一个person对象,并给他setName(xx),再getName的时候,就会显示我的名字叫XX。在实际业务中还可以有更灵活的运用,这里就不举例了。
2.安全性。
比如我们的操作系统在新建用户或在共享文件的时候,经常会提示对针对某个用户的权限是什么,是只读还是只写还是可读写,这里的读写就好比get/set。对于类来说,如果不使用set/get方法,直接用public定义某个属性,那么这个属性是可读可写的,如果你希望一个类的某个属性是只能读取,不能写入的时候,上面用public定义某个属性就不能满足了,但是我们可以使用private定义属性,再定义一个get方法,但是不定义set方法来实现。反之,只定义set,不定义get则表示该属性是只写不能读的。举个简单的例子,如下代码。
public class Circle { private double radius; private double pai = 3.14; public double getPai() { return pai; } public void setRadius(double radius) { this.radius = radius; } /** * 计算周长 */ public double getC() { return 2*pai*radius; } }
我们定义了一个圆类,定义了属性半径和pai,半径我只提供写的方法,但是不提供读,而pai只提供读,但不能写,并提供了一个计算周长的方法getC。在实际项目中,对一些类的设计时,严谨的设计是要考虑哪些类是只读或是只写的。
set/get的方法作用当然不只这些,实际项目中的用法有很多,比如对某个类升级,有一个属性的Type变化了,只要set/get的Type不变就不会影响到以前的代码。更多的用法只能在使用中多体会了。
相关文章推荐
- java 对类中的属性使用set/get方法的作用
- Java 对类中的属性使用set/get方法的意义和用法
- Java中属性私有,使用get/set方法的目的
- 【封装】java中为什么要将属性进行私有化,又使用set和get方法来设置和获取属性呢?
- java 中对类中的属性使用set/get方法的意义和用法
- Java中对类中的属性使用set/get方法的意义和用法
- JAVA中关于set()和get()方法的理解及使用
- 【JAVA】4、classpath属性的作用及使用方法
- Java---通过属性名反射获取get和set方法
- JAVA-Spring-Aop拦截ACTION中的方法,但是运行时AOP会拦截我Action中所有的私有属性的一些get,set方法。
- 使用PHP魔术方法实现属性的set、get方法
- Java中JFrame的getContentPane()和setContentPane()方法使用说明
- JAVA中关于set()和get()方法的理解及使用
- Java反射实体类属性(get ,set方法)
- Java获得基类各个属性、类型 、get/set方法
- java使用反射调用set和get方法
- JAVA中关于set()和get()方法的理解及使用
- java script Request获取URL地址栏属性的方法 (Get方式传参)+eval()使用
- [java]反射机制给属性使用set方法构造对象
- java中关于set()和get()方法的理解和使用