Java 封装概念 get set 与 直接使用成员变量的区别?
比如我定义个模型类(modelClass)分别写上Stringage;Stringid;publicStringgetId(){returnid;}publicvoids...
比如我定义个模型类(modelClass)
分别写上
String age;
String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
然后我test类访问
我先实例
modelClass mc =new modelClass();
然后 我可以
mc.age="10";
mc.id="1";
system.out.print(mc.age);
system.out.print(mc.id);
他可以直接输出 10 与 1 。
我这样子实例也可以
modelClass mc =new modelClass();
mc.SetId("1");
mc.SetAge("10");
system.out.print(mc.age);
system.out.print(mc.id);
一样可以打印出来 上面的效果
那我就想问下 到底mc.id ="1"; 或者 mc.setId("1")
到底有啥子区别? 难道就是为了有些时候让人家赋值的时候有限制?
或者说只能让人家get 不能让人家set 难道这个就是这样子做的目的就是这个? 展开
分别写上
String age;
String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
然后我test类访问
我先实例
modelClass mc =new modelClass();
然后 我可以
mc.age="10";
mc.id="1";
system.out.print(mc.age);
system.out.print(mc.id);
他可以直接输出 10 与 1 。
我这样子实例也可以
modelClass mc =new modelClass();
mc.SetId("1");
mc.SetAge("10");
system.out.print(mc.age);
system.out.print(mc.id);
一样可以打印出来 上面的效果
那我就想问下 到底mc.id ="1"; 或者 mc.setId("1")
到底有啥子区别? 难道就是为了有些时候让人家赋值的时候有限制?
或者说只能让人家get 不能让人家set 难道这个就是这样子做的目的就是这个? 展开
7个回答
推荐于2016-01-22 · 知道合伙人数码行家
关注
展开全部
get方法是给私有成员变量取值的,set方法是赋值的,而成员变量的值只能在本类中被使用,而且改变的时候容易引起新的问题
比如:
private String age;
private String id;
如果没有get,set你就无法赋值String age和String id。
规则上来说是没什么区别的, 用get, set, 是因为在这里面可以多做很多事情, 比如set一个字符串, 你把它转化为内部实际使用的整数(为了效率), get的时候又把整数转化为字符(为了便于理解).
另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了。
比如:
private String age;
private String id;
如果没有get,set你就无法赋值String age和String id。
规则上来说是没什么区别的, 用get, set, 是因为在这里面可以多做很多事情, 比如set一个字符串, 你把它转化为内部实际使用的整数(为了效率), get的时候又把整数转化为字符(为了便于理解).
另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了。
展开全部
面向对象编程有个封装的概念,即不将本身属性暴露给外部,即类属性应该定义为private,所以才用get,set的方法来赋值和取值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
JavaBean的属性一般都要设置成private,并根据需要提供getter/setter,这样可以提供更高级的控制(这时可以变换形式,比如不用public改用protected,再比如只提供getter不提供setter)
实现的高级功能有只读、只写、数据转换、加密、继承时改写等,而这些是你直接操作变量 无法完成(!!!) 的。
另外有些IDE或框架也要求实现这种方法来自动匹配,比如JSF
实现的高级功能有只读、只写、数据转换、加密、继承时改写等,而这些是你直接操作变量 无法完成(!!!) 的。
另外有些IDE或框架也要求实现这种方法来自动匹配,比如JSF
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没什么区别, 用get, set, 是因为在这里面可以多做很多事情, 比如set一个字符串, 你把它转化为内部实际使用的整数(为了效率), get的时候又把整数转化为字符(为了便于理解).
另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了.
另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般定义属性的时候,都定义成private的,也就是这个类私有的,这样从封装的概念将,比较安全,但是有些属性是需要外部类来使用的,所以就通过get和set方法来把这些属性类似公有话。从使用意义上讲没什么区别,但是从程序的安全性和健壮性来讲,使用get和set方法是最合理的。
等你写的程序多了,看的多了,自然而然的就明白了。谢谢
等你写的程序多了,看的多了,自然而然的就明白了。谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询