黑马程序员技术交流社区
标题:
字段和属性的本质区别是什么?
[打印本页]
作者:
小王
时间:
2014-2-8 14:02
标题:
字段和属性的本质区别是什么?
本帖最后由 小王 于 2014-2-8 17:44 编辑
字段和属性的本质区别是什么?
作者:
Darkhorse′Xa
时间:
2014-2-8 15:09
本帖最后由 Darkhorse′Xa 于 2014-2-8 15:13 编辑
字段的封装就是属性.
属性用于限制调用者赋值一些非正常数据,可以限制输入.当然直接给字段赋值也是可以的,属性拥有的get,set访问器可以帮我们控制值,并且获取值!而字段是做不到的,赋值给什么值就接受什么值,无法控制输入值是否为正常数据
作者:
wxfyzt
时间:
2014-2-8 16:37
上楼说的挺好,我再说一个区别,属性本身不存储数据,而数据存储在其对应的的私有字段中。
作者:
李稳023
时间:
2014-2-8 17:16
字段就是该类下储存的私有变量,属性就是对一个字段或者变量进行保护,属性分为可读,可写(这个一般很少出现)或者可读写。
在CSDN下载去有个C#入门经典视频教程,其中第三课就是对属性的描述。
作者:
wushanwow
时间:
2014-2-8 18:08
以前没有属性这个说法的.后来引入属性是因为在很多时候直接使用字段不安全.然后属性可以控制是否
class Test
{
//private关键字的意思就是说这个下面的变量是"不能够"被别的类访问的
//那么为了保护这个变量,如果需要被外部读取,或者只是改变的话,这样使用属性来进行保护下改变.
//首先我们定义这样一个private变量
private int i = 1234;
//然后这个变量只能被读取,不会被赋值.使用属性来进行传值.这样这个变量就不会直接暴露在用户面前.并且不会被改变.
public int age
{
//使用get让外面读取这个属性,以为这个属性是在这个类的内部,所有可以访问这个私有变量.
//当访问这个属性的时候,就返回i的值
get
{
return i;
}
//使用set可以改变这个变量的值.
set
{
i = value;
Console.WriteLine("使用属性改变了i的值:"+i.ToString());
}
}
}
class Program
{
static void Main(string[] args)
{
//首先将这个类实例化一个对象
Test test = new Test();
//然后将这个属性打印出来,这个时候看清楚了,我们读取的是这个属性,不是这个变量,私有变量在类外面是不应该被访问也是不可能被访问的.
Console.WriteLine("取得的值是:"+test.age.ToString());
//如下写法就是错误的,编译就会报错
//Console.WriteLine(test.i);
Console.ReadKey();
}
}
复制代码
作者:
小王
时间:
2014-2-8 18:16
恩,好的,理解了,谢谢给位大侠们哈
作者:
流失的温度0
时间:
2014-2-9 15:18
属性是为了保护字段的,比如人的年龄不能为复数,人是一个类,年龄就是字段,字段封装就是属性了,这个属性可以有get和set,也就是可读可写,写的时候可以通过属性来验证年龄值的有效性。因为年龄必须大于0。要注意的是属性不是用来存储数据的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2