首页 > 代码库 > C# 面向对象之封装

C# 面向对象之封装

封装是指将类的内部数据隐藏起来不让对象实例直接对其操作,C#中提供了属性机制来对类内部的状态进行操作。

在C#中封装可以通过public、private、protected和internal等关键字来体现。

为什么要对类的内部进行封装呢?

例:

public class Person

{

     public string name;

     public int     age;

}

如果我实例化上面这个类

Person p=new Person()

那么我给age(年龄)赋值为负数,这显然不符合业务逻辑,人的年龄可能为负数吗?

p.age="-1"

使用封装后

public class Person

{

     private string name;

   public string Name

  {

    get{return name;}

            set{name=value;}

  }

     private int     age;

   public string Age

  {

    get{return age;}

            set{

                   if(value>0)

      {

        age=value;  //这里对年龄进行控制,年龄必须要大于0才能赋值.那么年龄为-1就不能赋值

      }

      else

      {

        throw(new ArgumentException("error", value,"年龄不能为负数"));//这里会抛出异常

      }

     }

  }

}

封装后对象实例只能对属性进行操作,属性中可以写下自己的逻辑来控制。

 

C# 面向对象之封装