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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢玲 中级黑马   /  2012-12-18 09:22  /  1361 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

属性与public字段有什么区别??

评分

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

查看全部评分

6 个回复

倒序浏览
本帖最后由 黑马黄涛 于 2012-12-18 09:44 编辑

哎..不对,看错了,不好意思...
那是肯定有区别的啦...
如果没有get和set方法..他就是字段...加上就可以说这是属性...
反射中必需要给字段提供get 和set方法的...要不然不认的...最主要是这点区别吧...

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 刪除記忆ご 于 2012-12-18 09:44 编辑

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

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



评分

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

查看全部评分

回复 使用道具 举报
属性可以通过get和set方法进行非法值的控制,比如年龄不能设置成负值!而字段则不能进行这样的设置!

评分

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

查看全部评分

回复 使用道具 举报
private String name;
private int age;

name 有get 和set方法...而age没有,那么在反射时,Person类只被看作有一个属性....
还有get和set方法用来保护属性不越界...出于安全性的考虑,面向对象的特点...封装嘛...

评分

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

查看全部评分

回复 使用道具 举报
属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的。

评分

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

查看全部评分

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

希望对你有帮助   

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

评分

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

查看全部评分

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