A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忘忧草 中级黑马   /  2012-4-24 23:23  /  2751 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能详解一下get与set的用法?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
get   set用法中get是读取属性时进行的操作,set是设置属性时进行的操作。定义一个属性如果只有get,这个属性便是只读的 。同理set。
据上课老师讲的银行例子:
private   m_money;
private class bank()
{
get
{
return  m_money;
}
set
{
m_money=value;
}

}
m_money就像存取款一体机,你看不见里面有钱,但是你能set(存钱),用还能get(取钱)。m_money是一个私有字段是封装在类中的,类外程序是不允许访问的。而get    set用法中,类的get和set是外部程序访问类内部属性的唯一方法,就像你去银行取钱,你并不是直接从金库里拿现金(哪怕你是去抢劫)而是银行的工作人员把钱拿给你(get set)

点评

很形象  发表于 2012-4-25 09:16

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 陈世伟 于 2012-4-25 00:54 编辑

get用于读取,set用于写入.可以通过get和set控制用户只能读,或只能写,或者让用户输入的内容合法
例如:
在一个类中
       class person
       {
        int age;//我们不想让用户直接访问这个age,所以通过下面那个大写的Age把值传给小写的age,下面的意思是,如果用户输入的值>=0就把用户的值传给小age,如果<0就让age=0,这样就控制了用户只能输入>0的值,如果想让age只读就把set整个删掉,只保留get,如果想让age只能写,不能读,就把get整个删掉,只保留set
    public int Age
        {
         get{
               return age;
              }
         set{
              if(value>=0)
                {
                 age=value;
                 }
              else
                {
                age=0
                }
              }
         }

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
如果在封装字段时只用到了get就只能读取而不能写入。
也就是get是用来读取字段中的值的,而Set是用来获取用户指定的值并保存的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马