Jam*_*ran 11

限制对对象内部状态的访问.

考虑一类几何形状的经典例子.比方说,一个Circle对象.设置半径时,您可能希望自动计算区域(这将是一个只读属性)

class Circle
{
     float radius;

    public float Radius
    {
        get { return radius; }
        set { radius = value;  area = Math.Pi * radius * radius;}
    }

    float area;
    float Area
    {
        get { return area;}
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您允许直接访问"radius"数据成员,则无法area在更改时进行更新.此外,如果您允许直接访问area,用户可以不顾一切地改变它radius.


Rob*_*len 2

封装。