黑马程序员技术交流社区

标题: 属性和 public 字段的区别是什么? [打印本页]

作者: 一席倾城    时间: 2013-12-23 16:38
标题: 属性和 public 字段的区别是什么?
本帖最后由 一席倾城 于 2013-12-25 16:06 编辑

调用 set 方法为一个属性设值,然后用 get 方法读取出来的值一定是 set进去的值吗?


作者: 曹华    时间: 2013-12-23 18:57
属性提供灵活的机制来读取、编写或计算某个私有字段的值,  可以像使用公共数据成员一样使用属性,但实际上它们是称作“访问器”的特殊方法。
这样属性与public字段的区别就转移到函数与字段的区别了,去访问修饰符相同的话,就是函数体中可以有执行的语句,而字段则是定义变量。
补充下,属性是可以设置访问权限的。所以,如果非得那样做,还是有些区别的。
作者: Coding    时间: 2013-12-23 19:31
本帖最后由 Coding 于 2013-12-24 09:24 编辑

主要是看你怎么设置属性和字段了,如果使用传统的写法比如
private int age;
public int Age{get{return age;} set{age=value;}}
通过get获取的值可以是set设置的值, 也可以是 在当前类内部,操作age直接给age 赋值。如果age是非private的 也可以在外部类当中创建通过对象赋值。如果是 使用简便的写法 public int Age{set;get;} 这个的话 通过 get获取的值 就只能set赋的值。
作者: qly2046    时间: 2013-12-23 21:36
属性可以对设值、取值的过程进行非法值控制,比如年龄禁止设值负数,而字段则不能进行这样的设置。虽然一般情况下get读取的值就是set设置的值,但是可以让get读取的值不是set设置的值的。

作者: 菜刀砍电线    时间: 2013-12-24 16:53
不一定,只读属性可以调用构造方法赋值,属性就是以一种公开的方法获取和设置值,同时控制set设置值的合法安全性,如果设置了合法安全的值还不读取就没有意义了吧!





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