什么是类的封装?

时间:2022-07-25
本文章向大家介绍什么是类的封装?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是类的封装?

—— 新手编程1001问之C#编程基础


有一个问题,一直比较困扰。什么是类的封装?不就是创建一个类吗?为啥叫封装呢?不装会死吗?到底是多此一举呢,还是暗藏玄机?请指教。

哈哈,这么犀利的问题!不过,不知道为什么会困扰到你。

其实吧,要说类的封装,还真就是创建一个类。但是,为啥要叫它为“封装”呢?如果一定要说玄机,那么,玄机就在”封装“这里。

我们知道,类,因为其拥有的字段、属性和方法等成员的不同,而有很多种。有主要用于存储数据用的数据模型类,也有解决问题用的程序方法类。它们都有一个共性,那就是,我们创建的数据模型,在项目中会被反复用到,我们创建的程序方法,也会被反复用到。

那如果,我们在程序代码中创建一个类,就仅仅只是为了当前范围(域)内使用一次,开发项目的其他地方基本不会再用到。那么,我们在里创建这个类,确实就只能算“创建了一个类”,用完即止。

但是,更多的时候不是这样的,我们要定义一个数据模型,让它存储一个相对复杂的数据结构。这样的数据结构,大概率会在不同的地方反复用到,甚至传递一个复杂的数据参数时也会用到。不然,我们为什么要定义它?不如写一堆变量来得直接。你说,不,我就是想创建类,我喜欢用类存放数据。那么,难道你每次都临时创建一个吗?别说会出现一堆数据结构相同类名不同的东西在一起容易混淆,不易维护、更新,单单说你这样做,不觉得累吗?自虐真的好玩吗?程序员还不够苦吗?我们自己不学会帮自己省点力气,还指望谁能帮你呢?

所以说嘛,作为程序员,我们在下手写代码之前,咱得先静下心来,好好琢磨一下,我们需要创建哪些类?或者我们已经创建过哪些类?它们能重复使用吗?如果能,建议你就把它们集中放到一个自定义的类库里,不管程序代码走到哪里,需要的时候就调用它,这样不香吗?有必要重复写吗?写一万次,你顶多变成一个码字专家,而无法成为编程专家。所以,现在明白了?什么叫类的封装?

类的封装是面向对象编程的重要思想之一。它不是一个行为、一个操作,它是一种思想,一种面向对象编程的思想。

程序员的行业里流行一句话,叫做“不要重复你的代码”,也是这个意思。但凡你遇到需要再写一段已经写过的代码,你就应该想到,是否应该将这段代码“封装”起来,在任何需要用到的地方直接调用它,这叫“一次编码,重复调用”。

为了确保不同地方调用相同的代码能够实现通用,我们在创建这些代码时,需要对它的参数变量、字段、属性和方法等进行“泛化”处理,以确保能重复使用而不报错。这个与我们单点创建临时的类对象时,程序员的心态和处理方法,包括“穷举思维”的应用,都是完全不一样的。所以,封装的确是有重要意义的。

如果遇到一个较大一点项目,不会封装真的会死的,会累死!想好好活着,快乐编程,还是好好学会封装吧。

好,到此,我们小结一下:

创建一个类,实际上是将具有特定属性或功能的数据或方法,“打包”定义到一个模块中,供我们需要时调用它们。这个打包的行为,我们也称“类的封装”。

这就是工业领域里“部件集成”的概念。从这个角度,实际编程的实务中,类的封装几乎就是我们日常编程的主要任务了。

封装类的好处:

  • 封装可以隐藏实现的细节,实现代码模块化。
  • 支持重复调用。

下面我们看两个示例:

类的封装示例1:属性赋值的方法

// 自定义类,封装加数和被加数的属性
public class MyClass
{
 public int x { get; set; }
 public int y { get; set; }
 public int Add()
    {
        int z = x + y;
 return z;
    }
}
//下面是对上述加法封装类的应用
class MyProgram
{
 static void MyAdd()
    {
 //创建类的实例
 MyClass myClass= new MyClass();
  //给实例字段赋值
        myClass.x = 3;
        myClass.y = 5;
 //调用方法
 int myZ = myClass.Add();
  //打印输出
        Console.WriteLine(myZ);
    }
}

类的封装示例2:调用传参的方法

// 自定义类,封装加数和被加数的属性
public class MyClass
{
   //创建两个形参
 public int Add(int x, int y)
    {
        int z = x + y;
 return z;
    }
}
//下面是对上述加法封装类的应用
class MyProgram
{
 static void MyAdd()
    {
 //定义两个变量,准备用于实参
 int x = 3;
 int y = 5;
 //创建类的实例
 MyClass myClass= new MyClass();
 //调用实例的方法
 int z = myClass.Add(x,y);
  //打印输出
        Console.WriteLine(z);
        Console.ReadLine();
    }
}

类的访问修饰符

1、Public:公有的,是类型和类型成员的访问修饰符。对其访问不受任何限制。

2、Private:私有的,私有成员只有在声明它们的类和结构体中才是可访问的

3、Protected:保护成员,仅限该类的内部和继承类中可以访问。

4、internal:内部访问,同一个程序集中的所有类都可以访问,一般都是限于本项目内。

必要的场合,可选择使用。


更多问答请访问我的官网:高渡 - 爱高渡、学编程、手把手教你