黑马程序员技术交流社区

标题: 字段和属性有什么区别 [打印本页]

作者: mr_jack    时间: 2014-3-25 17:35
标题: 字段和属性有什么区别
本帖最后由 mr_jack 于 2014-3-26 09:34 编辑

字段和属性有什么区别,请觉个例子说明一下呢?
作者: czwanglei    时间: 2014-3-25 17:41
字段就是(C语言等等其他中的变量),C#中用属性来封装保护字段,所以有了属性新的概念。。多看视频,好好理解。。。
作者: aynulily    时间: 2014-3-25 18:34
属性就是用get set 访问器编程来 控制你所定义的字段的 访问权限啦,取值范围了,以及当某一字段改变时引起的其他成员的改变。
比方说有一字段 int age;当你这样定义他的时候,其取值范围 可以是int 类型所允许的取值范围,如果有一人赋值为50000,不会报错,但其实是不符合事实的(除非他来自星星),那么再编程的时候就应为此情况作出规定,
public int Age
{
      set{
              if{value>0&&value<200}
                 age=value;
          }

        get{ rutrue age;}
}

在我们定义性别的时候,只能是两个值,也可以用属性来控制,这是string 做不到的。还有某些字段的读写属性的控制。另一个应用是这样的:比方说出生日期和年龄。年龄是变化的,他通过出生日期 与 调用当前时间进行运算 得到。
可以在年龄的属性中 来控制的。

作者: 心灵苦旅    时间: 2014-3-25 19:11
属性本质上是一种方法,并且必然和类中的某个或某些字段相关联。通过属性来修改字段,可以对字段进行保护,可以在接收到数据后进行加工,再传给对应的字段,比如楼上说的访问权限、取值范围等等。
但值得注意的是,虽然属性和字段语法上比较相似,但由于属性的本质还是方法,因此并不是在任何地方都能当作变量使用,也不能把属性做为引用型参数(ref)或输出参数(out)来进行传递。
作者: luoyilan222    时间: 2014-3-25 20:51
Java中的属性,通常可以理解为get和set方法。而字段,通常叫做“类成员”。

这两个概念是完全不同的。

属性只局限于类中方法的声明,并不与类中其他成员相关。例如:
void setA(String s){}
String getA(){}
当一个类中拥有这样一对方法时,我们可以说,这个类中拥有一个可读写的a属性(注意是小写a)。如果去掉了set的方法,则是可读属性,反之亦然。

类成员(字段),通常是在类中定义的类成员变量,例如:
public class A{
private String s = "123";
}
我们可以说A类中有一个成员变量叫做s。
作者: zou5268237    时间: 2014-3-25 21:18
在C#中,我们可以非常自由的、毫无限制的访问公有字段,但在一些场合中,我们可能希望限制只能给字段赋于某个范围的值、或是要求字段只能读或只能写,或是在改变字段时能改变对象的其他一些状态,这些单靠字段是无法做到的,于是就有了属性,属性中包含两个块:set和get,set块负责属性的写入工作,get块负责属性的读取工作。在两个块中都可以做一些其他操作,如在set中验证赋的值是否符合要求并决定是否进行赋值。当缺少其中一块时属性就只能读或只能写,set和get块中属性必需有一个,因为即不能读又不能写的属性是没有意义的
作者: mr_jack    时间: 2014-3-26 09:33
多谢大家,明白了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2