C# 类与对象:面向对象编程的基石
C# 类与对象:面向对象编程的基石
本教程通过示例讲解 C# 中类与对象的概念。
C# 是面向对象语言,应用围绕对象构建。在 OOP 中,我们将复杂问题拆解为可复用、自包含的对象。
要使用对象,需完成两步:
- 创建类
- 从类实例化对象
C# 类
类是对象的蓝图。可将其比作房屋设计图:定义房间、门、窗及结构规则。按图建造的实际房屋即为对象。
多栋房屋可共用同一设计图,正如多个对象可从同一类创建。
在 C# 中创建类
class ClassName { }
定义了名为 ClassName 的类。类可包含:
- 字段 – 存储数据的变量
- 方法 – 执行动作的函数
示例:
class Dog {
// 字段
string breed;
// 方法
public void Bark() {
// 实现
}
}
上例中:
- Dog – 类名
- breed – 字段
- Bark() – 方法
注意: C# 中类成员包含字段和方法。
C# 对象
对象是类的实例。例如,Dog 类可产生 Bulldog、German Shepherd、Pug 等对象。
创建类的对象
ClassName obj = new ClassName();
new 创建对象,obj 为其名称。例如:
Dog bullDog = new Dog();
bullDog 对象现可访问 Dog 中定义的字段和方法。
通过对象访问类成员
使用点 (.) 运算符访问成员:
using System;
namespace ClassObject {
class Dog {
string breed;
public void Bark() {
Console.WriteLine("Bark Bark !!");
}
static void Main(string[] args) {
// 创建 Dog 对象
Dog bullDog = new Dog();
// 设置品种
bullDog.breed = "Bull Dog";
Console.WriteLine(bullDog.breed);
// 调用方法
bullDog.Bark();
Console.ReadLine();
}
}
}
输出
Bull Dog Bark Bark !!
注意使用 bullDog 和点运算符访问 breed 和 Bark()。
创建同一类的多个对象
从同一类实例化多个对象,各自拥有独立数据:
using System;
namespace ClassObject {
class Employee {
string department;
static void Main(string[] args) {
// 第一个员工
Employee sheeran = new Employee();
sheeran.department = "Development";
Console.WriteLine("Sheeran: " + sheeran.department);
// 第二个员工
Employee taylor = new Employee();
taylor.department = "Content Writing";
Console.WriteLine("Taylor: " + taylor.department);
Console.ReadLine();
}
}
}
输出
Sheeran: Development Taylor: Content Writing
每个对象持有自己的 department 值。
在不同类中创建对象
对象可在其他类中创建。例如:
using System;
namespace ClassObject {
class Employee {
public string name;
public void Work(string work) {
Console.WriteLine("Work: " + work);
}
}
class EmployeeDrive {
static void Main(string[] args) {
// 创建 Employee 对象
Employee e1 = new Employee();
Console.WriteLine("Employee 1");
// 设置名称
e1.name = "Gloria";
Console.WriteLine("Name: " + e1.name);
// 调用方法
e1.Work("Coding");
Console.ReadLine();
}
}
}
输出
Employee 1 Name: Gloria Work: Coding
EmployeeDrive 创建了 Employee 对象。公共成员允许跨类访问。访问修饰符详见 官方文档。
为什么需要对象和类?
类和对象实现模块化设计。例如游戏中有大量敌人,单个 Enemy 类可定义 health、ammo、Shoot()、Run()。每个敌人实例维护自身状态,共享行为逻辑。
围绕对象建模代码,可降低复杂度、提升可维护性、促进复用。
C语言