javabean中set和get方法

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:43:20
class Bean
{
int a;
public int getA()
{
return a;
}
public void setA(int a)
{
this.a = a
}
}
一直很奇怪为什么要用set和get,直接访问a不就可以了?有些书上说,隐藏了类的内部细节,避免用户修改,可是我还不是照样可以用set方法修改?

请指教,麻烦说的详细一点,谢谢各位了,这个问题让我一直很苦恼啊~
刚才没说清楚,补充一下,我的意思就是说如果像这样一个javabean:
public class Test{
private int add(int a,int b){
return a+b;
}
}
我在jsp页面或者别的类中直接调用add(3,5)不就可以了么?那怎么用set和get实现这种方法的隐藏? 那smile_bug你说什么时候可以用到set和get?我感觉好像我做了很多项目了,都没用到过阿....

首先新建一个javabean Student.java,字段有sno,sname,age等。如下:
public class Student
{
private String sno;
private String sname;
private int age;
}
保存后,右键Student.java,选择source->Generate Setter and Getter...这一项,选择select All选中所有的字段,确定后,即生成了所有字段的get和set方法

你可以看到set/get针对的是变量如你上面那个a
和你后面那个add方法没有关系,也不能通过set/get来隐藏。

而之所以用Set/get方法,这是面向对象里面的封装

在javabean里面,set()方法用于写入,get()方法用于输出,两者都是需要你自己去写的,名字可以不是这样,只要功能是就可以了。两个存在的意义是为了变量的私有化,防止外部的人对变量等进行修改导致错误与不安全。

除了共有属性,一般用private需要使用时用get.赋值用set
这样可以把属性隐藏起来。
这样调用SET方法之前比方说可以加个判断。是不是空值之类的。你也可以让你不想别人修改的属性不提供get和set方法!
这样别人可以修改使用哪个属性不可以修改使用哪个属性都在你的控制之内。

你要什么,就给我讲,我到屋里给你拿出来,但是你却不可以直接进屋去拿,万一你不熟悉我家里的情况,把我家搞乱了咋个办啊。(很精典)

另外。在hibernate中给一个属性赋值。hibernate查找的就是set+属性名(第一个字母大字)这样一个方法。然后自动把你要赋的值给它!

尽量让属性(物件,东西)私有化,让方法(能力,功能)公有化!
set/get是说属性的!对属性提供set/get方法!

你可以看下java反射机制,可以解决你的问题。
简单写了下: