关于private和public的使用范围,和他们的类型什么的我都懂。
我想问的是,一般的bean里面的成员变量都定义为private,然后通过get、set对这个变量赋值和取值。
那为什么我不能把这个变量定义为public呢?定位为public也是可以get、set的不是吗?
有人说,这样就可以直接用实例化的类名+.直接改这个变量的值了,不安全,我还是不太理解。
比如说:
public class Person {
private int id ;
private String name ;
private int age ;
public String school ; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public void setId(int id) {
this.id= id;
}
public void getId(int id) {
return id;
}}
我要找数据库Person表里面的一个person 。我必须先通过setId(),才能找到对应的person,这样的话,我其他的成员变量用public 和 private 就没区别了啊,必须先实例化一个对象,找到这个对象,才能改变这个对象的属性。这样为什么还存在安全性问题呢?
在我的理解范围内get、set只是方便变量的取值和赋值,改成public一样可以用,我不理解为什么必须要用private修饰成员变量呢?
安全性在哪,谁给我举个列子。
我想问的是,一般的bean里面的成员变量都定义为private,然后通过get、set对这个变量赋值和取值。
那为什么我不能把这个变量定义为public呢?定位为public也是可以get、set的不是吗?
有人说,这样就可以直接用实例化的类名+.直接改这个变量的值了,不安全,我还是不太理解。
比如说:
public class Person {
private int id ;
private String name ;
private int age ;
public String school ; public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public void setId(int id) {
this.id= id;
}
public void getId(int id) {
return id;
}}
我要找数据库Person表里面的一个person 。我必须先通过setId(),才能找到对应的person,这样的话,我其他的成员变量用public 和 private 就没区别了啊,必须先实例化一个对象,找到这个对象,才能改变这个对象的属性。这样为什么还存在安全性问题呢?
在我的理解范围内get、set只是方便变量的取值和赋值,改成public一样可以用,我不理解为什么必须要用private修饰成员变量呢?
安全性在哪,谁给我举个列子。
解决方案 »
- 求助关于SWING组件按钮提交事件显示不同的标签 [Java Java SE]
- 论WEB之消亡,B/S之覆灭,错误的开发方向
- 关于hashCode的疑问
- session过期事件
- Ireport问题,高手进
- Jspinner 怎么改它的长度?
- 网络Socket编程,在线急等解决,谢谢!
- 请问,在java里如何实现一个函数返回多个值?能举个例子吗?谢谢!
- 菜鸟请求帮助:JCreator怎样调试Bean或jsp页面
- 高分求解---struts怎样实现表单验证不通过重新导向输入页面,并给出出错信息?
- 关于java 转换Unix时间戳的问题
- 跪求大神啊,蛋都碎了,为什么我环境变量都配置好了,但是mySQL的驱动还是找不到
this.age=age%100;
}