属性是 对字段进行封装的访问入口,可以理解为给字段加了一扇安全门
如果直接公开字段:
public int age;
别人可以随便改:
age = -100; // 神人的年龄是负数的
明显不合理。
而我们的属性则可以控制
public int Age { get; set; }
这是最常见的写法。
等价于:
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
表示:
读取数据
表示:
修改数据
其中:
value = 要设置的新值
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0)
age = value;
}
}
这样就不会出现负年龄。
public int Age { get; }
public int Age { set; }
| 项目 | 字段 | 属性 |
|---|---|---|
| 是否封装 | ❌ | ✅ |
| 是否可控制 | ❌ | ✅ |
| 是否推荐公开 | ❌ | ✅ |
不会,本质仍是字段。
不是,是访问器。
属性 = 给字段提供安全访问的封装机制