黑马程序员技术交流社区

标题: java中 get/set的怎么用,以及什么时候用 ? [打印本页]

作者: 吴凯    时间: 2013-4-29 22:44
标题: java中 get/set的怎么用,以及什么时候用 ?
本帖最后由 吴凯 于 2013-5-1 01:36 编辑

求各位大虾指点 ....
作者: 一川    时间: 2013-4-29 23:07
用于获取类中的成员变量或者给其赋值,如:
public void SetNum(int num){this.num = num;}//赋值
public int GetNum(int num){return num;}//获取值

因为一般情况下,类的成员变量是private的,其他类就不能直接访问它了,所以为了能在类以外给该类的成员变量赋值或者取值,只有用声明为public的set和get方法来实现。
set和get方法是用于封装的,一般在private中用,但是如果不是在private中用代码也是可以执行的。
作者: 吴波    时间: 2013-4-29 23:09
get和set都是属于方法
set:设置
get:获取
大多用于封装数据或对象,需要保证他们的隐蔽性和安全性
作者: 极限冰风    时间: 2013-4-29 23:13
set和get方法一般是用来给类的成员变量赋值的,由于类的成员变量一般会声明为private的,其他的类是不能直接访问成员变量的,所以为了在类以外给该类的成员变量赋值或者取值;
只有用声明为public的set和get方法来实现set和get方法是用于封装的, 所以一般只在private中用;
例如:
private int i;

        public int getI() {
                return i;  //通过getI();方法来获取值
        }

        public void setI(int i) {
                this.i = i;  //通过setI方法来赋值
        }
作者: 邹晓慧    时间: 2013-4-29 23:14
在一个类中如果定义了私有的成员变量,那么外部是没办法直接调用的。必须通过对象名.方法 来进行修改等操作
假如说你定义了一个私有变量age
private int age;
然后你创建了一个类的对象,想设置这个age的值
你就要通过get和set方法,=-= 不过用有参数的构造函数也是可以的
public int getAge() 这个是获取age的数据,前面要后返回值类型,是根据你想要返回的数据来确定的,此处就是int
public void setAge(int age)这里就是设置age的数值,方法运行的结果是给age一个值,所以是不需要返回值类型的 但是需要有参数
作者: 施祖喜    时间: 2013-4-29 23:20
set和get是在一个类中当类中的属性被私有化的时候使用,它们是对外提供访问类中被私有化属性的一种方法,对象调用set对属性进行赋值,set方法中对赋值进行限制,get是返回值给调用者,
在类中如果有一个属性被私有就一定对应有一个set方法和get方法
作者: 黄茂霖    时间: 2013-4-29 23:22
在Java规范定义每个成员变量时,修饰符尽量是私有的(private),由于该变量时private所以其他外界的对象是访问不到的,此时如果要让其他对象访问则使用getXXX()的方法,如果要设置其成员变量,则通过setXXX()方法。
问:那为什么一定要用这种方式呢?
答:没为什么,规定是这样,你可以使用其他名字来起,但是如果你用其它名字起方法名就显得不规范,类似于这种符合特定规则的Java类我们通常称之为Javabean。嘿嘿!!
总结:
1.当一个变量要供外界访问(言外之意就是成员变量的修饰符是private),就定义getXXX()方法给外界访问,且方法必须是public的。
2.当一个变量要修改值时,就定义setXXX()方法给外界设值,方法同样必须是public。
3.XXX表示变量名,例如:private String name; 对应的get和set方法为--> public String getName() 和 public void setName()   首字母在方法要大写,规定呀!~
作者: cowthan    时间: 2013-4-30 15:01
get和set提供了访问类成员的方法:
1、为什么要先定义私有成员,再定义公有的get和set?
——这是面向对象的封装性,底层数据都被封装,只对那些外界可以访问的提供public接口
——或者对于某些数据只提供set,或只提供get,这是取决于业务需求

2、为什么是get和set?
——这就是一种约定,只要大家遵守这种约定,就可以共享一些依据此约定开发的类库

3、什么时候用?
——你定义一个类的时候只要遵守这种约定就行了,有时候不是你自己用,而是你使用的框架例如struts,
hibernate会使用你的get,set

4、总结:
——所以不用纠结,就像人家告诉你走路要靠右走,你就不要问为什么要靠右了,这就是一种约定,
只要大家都遵守约定,也不需要问什么时候走右边,总是走就是了
作者: 赵崇友    时间: 2013-4-30 16:32
一般情况下,set和get用于给类中私有成员提供对外的接口方法。而且一般情况下都应该被public修饰。以便其他类可以获得或者改变此类中的私有成员。后面学到的JavaBean更加明显。
另外,在构造函数被私有时,需要提供一个get方法用来得到一个该类的对象。单例设计模式中提到过。
这些做法就是保证类中成员私有,而不让别人操作。要想得到或改变类中的私有成员,你必须通过我提供给你的方法才行,也就是set和get。提高了安全性。因为,你既然使用了我提供给你的方法,那么你就会知道该方法的作用。就不会无意间操作私有成员了。
作者: 黄玉昆    时间: 2013-4-30 23:14
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢
作者: 吴凯    时间: 2013-5-1 01:26
黄玉昆 发表于 2013-4-30 23:14
如果仍有问题,请继续追问,如果问题已解决,请将分类改为已解决,谢谢

好的 多谢昆哥




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2