java的get()函数还是可以个

举个例子,ClassStudent{privateIntegerage=0;pubulicvoidsetAge(integerage){if(age<0)return;e... 举个例子,
Class Student
{
private Integer age=0;
pubulic void setAge(integer age)

{
if(age<0)
return;

else this.age=age;

}

public Integer getAge()
{
return age;

}
}
age定义成私有变量,然后写get函数获取,set函数设置;
但如果我在主函数里这样弄:
Student stu= new Student();
Integer age = stu.getAge();
age = -50;

这样不是还是把age设置成了非法的值吗?我不懂了。。。谁能帮忙解释一下
展开
 我来答
a11e90
2015-01-23 · 知道合伙人软件行家
a11e90
知道合伙人软件行家
采纳数:473 获赞数:1702
qq交流群:208779755 博客:https://my.oschina.net/haitaohu

向TA提问 私信TA
展开全部
不会的 你改的只是 a的值,而不是 stu的属性age的值,你输出一下 age就知道了

看不懂 再仔细理解一下 下面这句话
1. 在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;(所以int的东西放在栈中)
2. 堆内存用来存放由new创建的对象和数组以及对象的实例变量。
更多追问追答
追问
不对啊,主函数的变量age已经拿到了stu.age的引用,当然赋值可以改变它的值了
追答
晕 啥引用啊 int是存在 栈中的,而不是堆中  所以不存在你说的情况 你的 a 和 stu的 age属性 没有任何关系了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不出窝的小蜜蜂
2015-01-23 · 超过31用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:55.3万
展开全部
1、你主函数中的age都没设置值(所以你用stu.getAge()是得不到数据的),给对象stu的age赋值要调用setAge()函数;
2、主函数中的age = -50;并没有给对象里的age赋值;
3、正确的使用方法如下:
Student stu= new Student();
stu.setAge( -50);
Integer age =stu.getAge();//因为设置的age值为-50,所以得不到结果(有函数setAge()中的retuen可知)
追问
假设我student的构造函数里已经给age赋值了呢?
追答
那样的话,就可以直接调用getAge()函数了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式