1. 类 (Class) = 设计图纸

想象一下,你要造一款新型号的机器人。在你动手制造之前,你需要先画一张非常详细的设计图纸,对吧?

这张图纸上会规定:

  • 它有什么? (比如:有两个手臂、一个屏幕头、两个轮子脚)。这在代码里叫 字段 (Fields) 或 属性 (Properties),是“数据”。

  • 它会做什么? (比如:会走路、会打招呼、会计算)。这在代码里叫 方法 (Methods),是“行为”。

这段代码里的 class Customer 就是一张这样的“设计图纸”。

csharp

// 这是一张设计图纸,图纸名叫【Customer】(顾客)
public class Customer
{
    // 图纸上写着:每个顾客都应该有...
    public string Name;   // ...一个名字(字段:数据)
    public int Age;       // ...一个年龄(字段:数据)

    // 以及每个顾客都应该会...
    public void Greet()   // ...一个打招呼的方法(行为)
    {
        Console.WriteLine("Hello!");
    }
}

关键点一: 图纸本身不是机器人。你不可能拿着图纸去帮你拿快递。图纸只是一个设计和规范,告诉你做出来的机器人应该是什么样、有什么功能。


2. 对象 (Object) = 实物产品

现在,你拿着 Customer 这张图纸,说:“好了,我们开始根据图纸真正做一个机器人出来吧!

这个“根据图纸做出来的、实实在在的、看得见摸得着的机器人”,就是对象,也叫实例

在代码里,我们用 new 这个关键字来“动手制作”。

csharp

// 用 new 关键字,按照 Customer 图纸制作了一个真实的顾客对象
// object1 就是这个真实对象的“名字”或者“遥控器”
Customer object1 = new Customer();

关键点二: 类(图纸)是模板、是规范。对象(实物)是根据这个模板创建出来的具体实体,你可以和它互动(比如让这个顾客对象执行 Greet() 方法来说 Hello)。


3. 对象引用 (Reference) = 遥控器 / 送货地址

现在到了最有趣也最容易混淆的部分:引用

在现实生活中,你造出了一个巨大的机器人,你没法把它随时带在身边。但你可以拿着一个遥控器来控制它。这个遥控器代表那个机器人,但它不是机器人本身。

在编程世界里,变量 object1 就是这样一个“遥控器”。它本身不储存那个庞大的顾客对象(数据),它只储存了一个“地址”,告诉计算机去内存里的哪个地方找到这个真实的对象。

我们来分解代码:

  • 情况一:有遥控器,也真有一个机器人

    csharp

    Customer object1 = new Customer(); // 造了个机器人,并把遥控器 object1 对准它
    object1.Greet(); // 按下遥控器上的“Greet”按钮,机器人就会打招呼(安全!)
  • 情况二:只有一个遥控器,但没配对任何机器人

    csharp

    Customer object2; // 只有一个叫 object2 的遥控器,还没配对任何机器人
    // object2.Greet(); // 如果你现在直接按按钮,遥控器不知道发给谁,会报错!
  • 情况三:一个机器人,多个遥控器

    csharp

    Customer object3 = new Customer(); // 造了一个机器人,用遥控器 object3 控制它
    Customer object4 = object3;       // 把遥控器 object3 的信号**复制**给了遥控器 object4
                                      // 现在 object3 和 object4 指向的是**同一个**机器人!
    
    object3.Name = "Alice"; // 用遥控器 object3 把机器人的名字改成 Alice
    Console.WriteLine(object4.Name); // 用遥控器 object4 去看机器人的名字,输出也是 "Alice"

    因为他们控制的是同一个东西!所以通过一个“遥控器”做的修改,用另一个“遥控器”立刻就能看到。

关键点三: 变量(如 object1)是引用(遥控器),它指向内存中真正的对象(机器人)。你可以有很多个遥控器指向同一个机器人。

总结:

  1. 类 (Class): like 设计图纸。它定义了一种东西应该长什么样、能干什么,但它自己不是那个东西。

  2. 对象 (Object): like 根据图纸造出来的实物。是具体存在、可以使用的实体。用 new 关键字来制造。

  3. 引用 (Reference): like 控制实物的遥控器。变量名就是一个遥控器,它保存着实物在内存中的“地址”。

    • 你可以有多个遥控器控制同一个实物。

    • 只有一个遥控器而没配对实物是危险的,操作它会出错。

所以,Customer object1 = new Customer(); 这句话的完整意思是:
“按照 Customer 图纸 (class) 造一个新的实物顾客 (new Customer()),然后把这个实物的遥控器交给变量 object1 来保管。”

更多推荐