c#中封装的介绍
1、什么是封装
封装就是将对象运行所需要的资源封装在程序对象中,并给外界公布接口,这样很复杂的逻辑经过包装之后给其他类使用就很方便,其他类不需要关心你里边的功能是以哪种方式实现的,只要传入需要的参数就可以得到想要的结果。
例如:我们要看电视,只需要按一下开关和换台就可以了,有必要了解电视机内部的结构嘛?制造商为了我们方便使用电视机,把复杂的内部结构全部封装起来,只给我们暴露简单的接口,比如电源开关。至于电视机内部的结构,怎么实现的功能,这我们不需要操心。
对此,就是说需要让用户知道的我们才暴露,不需要让用户知道的全部要隐藏起来,这就是封装。简单来说就是,“你不要告诉我你是以那种方式实现的,只要能做到就可以了”。
2、封装的作用/意义又是什么?
(1)提高代码的安全性,就是说我只给外界暴露尽可能少的东西,这样对内部是比较安全的,同时也避免了在外部无意的破环,保护了内部的数据
(2)提高代码的复用性。就是说比如在遇到这个问题,我不使用封装,那么解决了这个问题,在下次又遇到的类似的问题还要继续再敲一遍代码吗?所以代码封装以后,我i就再给他一个接口,或者少许的修改一下就可以了
(3)“高内聚”,是指类的内部数据操作细节我们自己完成,不允许外部干涉。我们将内部的细节封装,隐藏起来,这样不仅便于后期内部代码的修改,更是提高了可维护性。
(4)“低耦合”,是指仅需暴露少量的方法给外部使用,尽量方便外部使用。就是说简化外部调用,便有调用者使用,便于扩展和协作。
3、那么该如何封装?
(1)创建你需要的类:解决方案资源管理器=》添加=》选择类=》设置你需要的创建类的名字=》确定
(2)在程序主入口创建你需要的对象,注意对象类型和你的类名一直,对象名要有意义
Student stu = new Student("张三",14,"男");//实例化一个Student对象,并传递值给构造函数
(3)在类中创建你需要的字段并进行封装为属性,并且在外部可以进行获取和修改
class Student
{
//定义私有的成员变量来保护数据
private int age;//年龄
private string name;//姓名
private string sex;//性别
public Student(string name,int age,string sex)//构造函数接收到参数将参数通过封装的属性来给字段初始化变量
{
this.Name = name;
this.Age= age;
this.Sex = sex;
}
//这就是将字段封装为属性 private表示设置属性的值只能在本类中修改,外部没有权限修改,这能获取
//将 private去掉后外部就可以进行修改
public int Age { get { return age; } private set { age = value; } }
public string Name { get { return name; } private set { name = value; } }
public string Sex { get { return sex; } set { sex = value; } }
此时,用户是无法在外部给属性中的字段赋值的,只能读取/获取
Console.WriteLine(stu.Name + "" + stu.Age + "" + stu.Sex);//获取对象的属性中的字段的值
这个过程就是封装,只是给外部留有一个接口用来获取或设置。我们的数据都被封装,外界不知道,它只能使用,所以是比较安全的。
4、什么情况下要进行封装
1、保护字段/数据,这个字段/数据我不想让外界用户知道,就使用封装
2、但是可以让外部修改它,这个时候就使用到封装(属性封装)
3、这个字段/数据我要限制用户输入的值,比如说这个字段是sex性别,只能输入男和女,超出了这个范围就没有数据,所以我们要限制用户输入的内容,这个时候就使用封装
4、就是只提供这个数据可以给用户外界使用,但不能修改它,此时就用到的封装