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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩俊 中级黑马   /  2012-11-30 20:08  /  1601 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么情况下属性需要封装

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
Jam 中级黑马 2012-11-30 20:12:47
沙发
有字段就必须封装成属性,这是传统规定,不管在哪学的C#老师应该都会这样说

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
更加方便简单吧,比如在set里可以直接用if……else判断,值是否合法。

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
保护私有字段的情况下吧

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
多个方法都要调用该属性时可以封装,三层和两层也需要封装

评分

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

查看全部评分

回复 使用道具 举报
简单来说就是在set里可以用if……else判断,值是否合法。

评分

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

查看全部评分

回复 使用道具 举报
在get访问器和set访问器中我们可以写一些预处理的代码,例如我们定义了Circle类:
class Circle
    {
        private const float pi = 3.14;
        private float r;
        //周长的属性
        public float L
        {
            get
            {
                //将计算后的结果返回
                return 2 * pi * r;
            }
        }
       //半径的属性
        public float R
        {
            set
            {
                //先判断要赋的值是否合法
                if (value < 0)
                    r = 0;
                else
                    r = value;
            }
        }
    }
这样我们需要周长时,可以直接返回计算出的周长。要给半径赋值时,可以先对值进行判断,合法了才赋值。通过使用属性可以增强类的安全性和灵活性。

评分

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

查看全部评分

回复 使用道具 举报
我不明白LZ的意思。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马