1. 入门
你应该已经听说过,类 就是个模板,而 对象 是它的实例。
但现在是时候更深入地搞懂类和对象啦!
想象一下你是汽车厂的工程师。你不用手动组装每一辆车,而是先画个图纸——一份通用的说明书,照着它能造出一堆同款的车。图纸上写着车得有发动机、轮子、车身、颜色,还有它能干啥。
在编程世界里,这个图纸就叫 类。
再想象一下,工厂照着这图纸造了一批车。每辆车都是真的,能上路,有自己的编号、颜色,甚至有点小个性。但它们都是按同一份图纸造出来的。
这些现实中的车,在编程里就叫 对象(或者说类的实例)。
所以,记住:
- 类 —— 就像图纸、模板、方案。它描述了某个东西有哪些数据(比如品牌、颜色、门的数量)和能干啥(比如开车、刹车、按喇叭)。类只是个描述,本身不怎么占内存,也不是“活的”。
- 对象 —— 就是按类的图纸造出来的“车”。它是你程序里真实存在的“活的”东西,占用内存,有自己独特的数据(比如编号、颜色),还能做类里写的那些事。
听起来有点抽象?别急,马上就全明白了。
2. 什么是类?
类 —— 就是你自己定义的数据类型,规定了这种类型的对象应该长啥样:有哪些特征(状态/属性/字段),还能做哪些动作(行为/方法/函数)。
类会定义:
- 字段(变量) —— 对象里存的数据。
- 方法(函数) —— 对象能干的事。
- 属性 —— 用来访问数据的特殊方法。
- 事件 —— 用来通知别人的机制(后面会讲)。
- 构造函数 —— 用来创建对象的特殊方法。
public class Person
{
// 字段(数据)
public string Name;
public int Age;
// 方法(动作)
public void SayHello()
{
Console.WriteLine($"你好!我叫{Name},我{Age}岁。");
}
}
在这个例子里我们声明了一个 Person 类。它有两个字段(Name 和 Age),还有一个方法 SayHello()。这就是最简单的类啦。
3. 什么是对象?
对象 —— 就是类的实例,也就是按“图纸”(类)在内存里造出来的具体东西。
当你创建一个 Person 类型的变量时,你就得到了一个对象——每个字段都有独一无二的值。不只是“一个人”,而是比如叫Johnny、12岁的那个人。当他和你打招呼(也就是调用 SayHello() 方法)时,他会“告诉”你自己的信息。
// 创建Person类的对象
Person person1 = new Person();
person1.Name = "艾丽莎";
person1.Age = 28;
person1.SayHello(); // => 你好!我叫艾丽莎,我28岁。
// 再创建一个“人”
Person person2 = new Person();
person2.Name = "鲍勃";
person2.Age = 32;
person2.SayHello(); // => 你好!我叫鲍勃,我32岁。
每个对象都不是简单的复制品:它是独立的,有自己的数据(在例子里就是名字和年龄)。
4. 类和对象的主要区别
主要区别:
- 类 —— “图纸”、说明书、数据类型。
- 对象 —— 这个类型的具体代表;按图纸造出来的“房子”;按图纸生产的“车”。
你可以创建任意多个同一个类的对象。比如有了 Person 类,你可以在程序里造出一百万个“人”。
为啥这样方便又重要?
想象一下没有类的程序。如果你有个学生名单,就得把名字、年龄、成绩啥的都分开存在不同的数组里:
string[] studentNames = { "谢尔盖", "格里沙", "玛莎" };
int[] studentAges = { 20, 19, 21 };
// 如果要加个新属性,又得多一个数组。
// 想换两个人的位置,简直噩梦!
用类的话,数据不会乱七八糟地分散在不同数组里,而是很合理地放在一起:
public class Student
{
public string Name;
public int Age;
}
Student[] students = new Student[3];
students[0] = new Student { Name = "谢尔盖", Age = 20 };
students[1] = new Student { Name = "格里沙", Age = 19 };
students[2] = new Student { Name = "玛莎", Age = 21 };
是不是清楚多了也方便多了!而且你还可以给每个学生加方法(比如“打招呼”或者“算平均分”)。
图示:类和对象的关系
+------------------+ +----------------+
| class Person |=========>| person1: |
| (图纸/类型) | | Name = "艾丽莎"|
| | /| Age = 28 |
+------------------+ / +----------------+
/
+------------------------/----------------------+
/
+----------------+
| person2: |
| Name = "鲍勃" |
| Age = 32 |
+----------------+
5. 类和对象在现实生活中的应用
类和对象是C#里所有应用的基础。你在.NET里看到的所有东西:窗口、按钮、表单、数组、集合、数据库连接、日志——全都是按某个类造出来的对象。
举几个例子:
- Button 类——就是屏幕上按钮该长啥样的说明书。每次你创建新按钮,就是这个类的对象。
- Stream 类(输入输出系统里的):你拿到一个能操作文件的对象。
- 你以后写的 User 类,用来存用户信息——还是同样的模板。
关于命名、修饰符和规范的简短说明
- 类名一般用大写开头,比如 Person、Order、Product。
- 变量名一般小写开头,比如 person、user1、orderList。
- 通常类会写成 public,这样整个项目都能用。
GO TO FULL VERSION