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 难道这个就是这样子做的目的就是这个?
展开
 我来答
pieryon
推荐于2016-01-22 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14411 获赞数:166863
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
get方法是给私有成员变量取值的,set方法是赋值的,而成员变量的值只能在本类中被使用,而且改变的时候容易引起新的问题
比如:
private String age;
private String id;
如果没有get,set你就无法赋值String age和String id。
规则上来说是没什么区别的, 用get, set, 是因为在这里面可以多做很多事情, 比如set一个字符串, 你把它转化为内部实际使用的整数(为了效率), get的时候又把整数转化为字符(为了便于理解).

另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了。
我很菜
2011-05-05 · TA获得超过345个赞
知道小有建树答主
回答量:126
采纳率:0%
帮助的人:91.9万
展开全部
面向对象编程有个封装的概念,即不将本身属性暴露给外部,即类属性应该定义为private,所以才用get,set的方法来赋值和取值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mikemelon
推荐于2018-03-08 · TA获得超过4594个赞
知道小有建树答主
回答量:1261
采纳率:0%
帮助的人:1561万
展开全部
JavaBean的属性一般都要设置成private,并根据需要提供getter/setter,这样可以提供更高级的控制(这时可以变换形式,比如不用public改用protected,再比如只提供getter不提供setter)

实现的高级功能有只读、只写、数据转换、加密、继承时改写等,而这些是你直接操作变量 无法完成(!!!) 的。

另外有些IDE或框架也要求实现这种方法来自动匹配,比如JSF
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lornally
2011-05-05 · TA获得超过485个赞
知道小有建树答主
回答量:388
采纳率:0%
帮助的人:77.6万
展开全部
没什么区别, 用get, set, 是因为在这里面可以多做很多事情, 比如set一个字符串, 你把它转化为内部实际使用的整数(为了效率), get的时候又把整数转化为字符(为了便于理解).
另外, 如果你用了继承, set的时候可以调用父类的相应方法......
总之get, set有一些便利, 所以很多编辑器直接支持了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanyuzhing
2011-05-05 · TA获得超过461个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:74.2万
展开全部
一般定义属性的时候,都定义成private的,也就是这个类私有的,这样从封装的概念将,比较安全,但是有些属性是需要外部类来使用的,所以就通过get和set方法来把这些属性类似公有话。从使用意义上讲没什么区别,但是从程序的安全性和健壮性来讲,使用get和set方法是最合理的。
等你写的程序多了,看的多了,自然而然的就明白了。谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式