java类中的get,set属性的作用

javabean中一般都要写get set属性,我知道可以对数据进行存取操作,
我的问题是如果在public的类中定义了一个private的变量,又写了public的get set属性
get{return m;}
set{m=value;}只是这样对数据存取并没有对数据进行处理,那么以上这种情况和在类中定义一个public的变量但不写此变量的get set属性有什么区别
已或销下是我的理解,我用例子说明一下
private int m;
public int getM(){
return m;
}
public void setM(int value){
m=value;
}
private的作用范围是自己本身这个.java文件,这样如果我不写get,set方法,那么其他类就无法操作m。如果像上面的例子,直接写成public int m
没什么大区别。
但是,如果我要在类此羡取值的时候做一些操作,比如
public int getM(){
return m+1;
}
public void setM(int value){
m=value+1;
}
这样就不一样了森团拍。
而且越学到后面,就会越觉得这样的写法很好。
比如用Struts的时候,我们前台传数据给后台,以前赋值要自己用set方法手动设值,如果按我这样规范命名,默认数据就会写到m中。
这其实也是一个规则吧。
不知道我这样说算不算准确。
哈,你能想到这羡滑个,说明你还是个肯动脑子的。
就我的理解,来分享一下吧:
1 首先JavaBean是有这个规定,所有旅猜的属性都要为私有,然后用get、set方法来存取,很多其他类使用JavaBean时,会根据get、set方法来做操作。
2 使用get、set的一个原因是:你将来可能要对所存取的对象,做一些改变,那么,如果直接引用了该对象,将来改起来,使用过这个类的对象,都要进行修改。如果用了get、set方法,那么就只要在这两个方法里面修改了,不会影响到使用这个类的其他对象。
3 很多人使用get方法时,是错误的。比如有一兄镇腊个private属性a,很多人在get方法里就直接像这样返回a“return a”,结果辛辛苦苦弄的private完全失效了,别人只要使用get方法,就完全可以修改这个属性。所以最好的返回这个a拷贝,以避免其状态被外人修改。如果需要修改状态,一律从set方法这个入口进去。
首先 public的变量 是不可行的,面向对象的重点就是 封装,就是不让别人看到你的东西 , 你的类提供的只是 public 的接口方法 , 这样的好处就是,你的内部实现可以随你修改,只要接口的 形燃模参,返回不改, 别人调用你的接口,就完全不需要修改。

至于为什么要这么写 ,我的理解是,如前面一个人讲struts 会自动赋值;还有就是 程序的方法的功能要尽量的单一化,有助于以后的维护以及修改,还有你是可以修改 get set的实现方式的,而败虚且此处一修改,所有的引用的都察段燃会起作用,完全不需要你一处一处的去查找修改。比如 getM{m=*** return m}。
这是javabean的规范,如在jsp中使用EL,比如你写了一个${a.name},它就会利用反射机制,调尘卖神用a对象的getName方法得到返回值。还有其他各种各样的框架,如hibernate,它持久对象派亏属性的提取,设置,就是根据public的get,set方法。
这是约定俗称的东西,没必要深究配雹
这说到底是一个思维习惯的问题,JavaBean是有其规范的,其中get和set方法是其显著的特征