javabean中set和get方法

classBean{inta;publicintgetA(){returna;}publicvoidsetA(inta){this.a=a}}一直很奇怪为什么要用set和... 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?我感觉好像我做了很多项目了,都没用到过阿....
展开
 我来答
day忘不掉的痛
推荐于2018-05-10 · 知道合伙人数码行家
day忘不掉的痛
知道合伙人数码行家
采纳数:62646 获赞数:223942
本人担任公司网络部总经理多年,有充足的网络经验、互联网相关知识和资讯。

向TA提问 私信TA
展开全部
首先新建一个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方法
zbdy1
2009-02-02 · TA获得超过265个赞
知道小有建树答主
回答量:262
采纳率:0%
帮助的人:149万
展开全部
除了共有属性,一般用private需要使用时用get.赋值用set
这样可以把属性隐藏起来。
这样调用SET方法之前比方说可以加个判断。是不是空值之类的。你也可以让你不想别人修改的属性不提供get和set方法!
这样别人可以修改使用哪个属性不可以修改使用哪个属性都在你的控制之内。

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

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

尽量让属性(物件,东西)私有化,让方法(能力,功能)公有化!
set/get是说属性的!对属性提供set/get方法!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
knightzhuwei
2009-01-21 · TA获得超过1万个赞
知道大有可为答主
回答量:2440
采纳率:0%
帮助的人:1997万
展开全部
一方面是隐藏程序细节 一方面是javabean的规范要求

一个例子
class Person {
private String name;
private String age;
public String getName(){
return name; }
public void setName(String name) {
this.name = name; }
public String getAge() {
return age; }
public void setAge(String age) {
this.age = age; } }
在这里本来就可以用get与set取值或者设置值了,假如我们直接将变量声明为public不是更简单点。这种情况有必要用get与set方法吗?

在这里解释为什么要还是要用get与set。

这里就有一个封装和控制的问题。假设你直接访问属性 person.name;突然有一天,你可能需要对每个名字,或者某个名字过滤掉一些东西,怎么办?那么你就只好在出现person.name的地方到处添加过滤机制。如果你使用getName()方法,那么我就在这个方法里面过滤一下就OK了。 其实总体思想就是一个面向对象的观点来做事情,你要什么,就给我讲,我到屋里给你拿出来,但是你却不可以直接进屋去拿,万一你不熟悉我家里的情况,把我家搞乱了咋个办啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
就雪存E
推荐于2016-07-25 · TA获得超过3280个赞
知道大有可为答主
回答量:9808
采纳率:22%
帮助的人:1094万
展开全部
你可以看到set/get针对的是变量如你上面那个a
和你后面那个add方法没有关系,也不能通过set/get来隐藏。

而之所以用Set/get方法,这是面向对象里面的封装
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
11无敌队长
2015-07-22 · TA获得超过167个赞
知道小有建树答主
回答量:380
采纳率:50%
帮助的人:73万
展开全部
你可以看下java反射机制,可以解决你的问题。
简单写了下:

import java.lang.reflect.Method;

public class Demo {
private String id;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Demo demo = new Demo();
Method[] methods = Demo.class.getMethods();// 类的方法
for (Method method : methods) {
String methodName = method.getName();
// System.out.println("方法名:" + methodName);
if (methodName.startsWith("set")) {// 如果方法名以set开头
method.invoke(demo, "测试值");// 调用方法
}
}
for (Method method : methods) {
String methodName = method.getName();
// System.out.println("方法名:" + methodName);
if (methodName.startsWith("get") && !methodName.equals("getClass")) {// 如果方法名以get开头
Object value = method.invoke(demo);// 调用方法,并打印返回值
System.out.println(value);
}
}
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(15)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式