黑马程序员技术交流社区

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

作者: 谢玲    时间: 2012-12-18 09:22
标题: 属性与public字段有什么区别??
属性与public字段有什么区别??
作者: 黑马黄涛    时间: 2012-12-18 09:37
本帖最后由 黑马黄涛 于 2012-12-18 09:44 编辑

哎..不对,看错了,不好意思...
那是肯定有区别的啦...
如果没有get和set方法..他就是字段...加上就可以说这是属性...
反射中必需要给字段提供get 和set方法的...要不然不认的...最主要是这点区别吧...
作者: 王晨    时间: 2012-12-18 09:42
本帖最后由 刪除記忆ご 于 2012-12-18 09:44 编辑

区别:
属性的定义:属性是一个代表类的实例或类中的一个数据项的函数成员。从定义可以看出,属性是类的一个函数成员或者说是方法。对类的属性的设定和获取可以用两个访问器set和get来实现。
字段的定义:类的字段准确地说应该是类的数据成员,其定义是:用于存储类和类的实例相关数据的变量。

所以,简单说来,字段是一个用于存储数据的变量,属性是一个方法或者说是一个函数成员。




作者: 张向阳    时间: 2012-12-18 09:43
属性可以通过get和set方法进行非法值的控制,比如年龄不能设置成负值!而字段则不能进行这样的设置!
作者: 黑马黄涛    时间: 2012-12-18 09:46
private String name;
private int age;

name 有get 和set方法...而age没有,那么在反射时,Person类只被看作有一个属性....
还有get和set方法用来保护属性不越界...出于安全性的考虑,面向对象的特点...封装嘛...
作者: 唐海军    时间: 2012-12-18 10:56
属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的。

作者: dbqwaii    时间: 2012-12-19 13:51
属性是通过gei/set方法进行填值 从而起到保护作用
然而 public 字段 可以直接调用
例如 你想赋个性别  public sex;  
别人用的时候 ,完全可以赋个3  或者猜
但有了属性get/set就不一样了,  可以进行判断   如果赋的不是男或者女  则可以返回你设定的值

希望对你有帮助   

       --正在努力学习,希望进入黑马的小学员




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