三、C#面向对象编程(类与对象)

C# 是一种面向对象的编程语言,这意味着在 C# 中,我们主要与对象打交道,而对象是由类定义的。面向对象编程(OOP)是一种编程范式,它使用“对象”来设计软件和应用程序。以下是关于 C# 中类与对象的基本概念:

  1. 类(Class):类是对象的模板或蓝图。它定义了对象的属性(字段)和方法。类定义了对象的数据和行为。例如:
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void Greet()
    {
        Console.WriteLine("Hello, my name is " + Name);
    }
}

在这个例子中,Person 是一个类,它定义了一个人的姓名和年龄属性,以及一个问候方法。
2. 对象(Object):对象是类的实例。它是类的一个具体实体。当我们创建一个类的实例时,我们得到一个对象。例如:

Person person1 = new Person();  // 创建一个 Person 类的实例
person1.Name = "Alice";          // 设置对象的属性
person1.Age = 25;                // 设置对象的属性
person1.Greet();                 // 调用对象的方法

在这个例子中,person1Person 类的一个实例,也就是一个对象。我们通过这个对象来设置它的属性(如姓名和年龄)并调用它的方法(如问候)。
3. 封装(Encapsulation):封装是面向对象编程的三大基本特性之一。它指的是隐藏对象的内部状态并防止直接访问。我们通过访问器(getter)和设置器(setter)来控制对类中字段的访问。在上面的 Person 类中,NameAge 字段就是封装的例子。
4. 继承(Inheritance):继承是面向对象编程的另一个重要特性,它允许一个类继承另一个类的属性和方法。这使得我们可以创建一个更加具体的类(子类),它继承了更一般的类(父类)的属性和方法。例如,我们可以创建一个 Student 类,它继承自 Person 类:

public class Student : Person  // Student 类继承自 Person 类
{
    public int StudentId { get; set; }

    public void Register()
    {
        Console.WriteLine("Student registered successfully.");
    }
}

在这个例子中,Student 类继承了 Person 类的所有属性和方法,并添加了自己的 StudentId 属性和 Register 方法。
5. 多态(Polymorphism):多态是指一个接口可以有多种实现方式。这使得我们可以将不同类型的对象视为同一类型,并调用相应的方法。多态的实现通常依赖于继承和接口。
6. 抽象类(Abstract Class)和接口(Interface):抽象类是一个不能被实例化的类,它定义了一些基本的属性和方法供子类继承和实现。接口是一组方法的集合,它定义了类必须实现的方法,但不包含方法的实现。一个类可以实现多个接口。
7. 构造函数(Constructor):构造函数是一种特殊的方法,它在创建对象时自动调用。构造函数用于初始化对象的属性。在 C# 中,构造函数可以有参数,也可以没有参数(默认构造函数)。在上面的 Person 类中,我们没有显式定义构造函数,所以编译器会自动为我们提供一个默认的无参数构造函数。如果我们想定义自己的构造函数,可以这样做:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public Person(string name, int age)  // 带参数的构造函数
    {
        Name = name;
        Age = age;
    }
}

在这个例子中,我们定义了一个带参数的构造函数,这样在创建 Person 类的实例时就需要提供姓名和年龄参数。

除了上面提到的特性,C# 还有一些其他与类和对象相关的概念,例如:

  1. 析构函数(Destructor):析构函数是一个特殊的方法,它在对象被销毁时自动调用。它通常用于释放资源。在 C# 中,析构函数使用 ~ 符号来定义。
  2. 静态类(Static Class):静态类是一个不能被实例化的类,它只能包含静态成员。静态成员是属于类的,而不是属于类的实例。
  3. 单例模式(Singleton Pattern):单例模式是一种设计模式,它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。
  4. 工厂模式(Factory Pattern):工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。工厂模式通过将对象的创建与使用分离,使得代码更加模块化。
  5. 依赖注入(Dependency Injection):依赖注入是一种设计模式,它允许将一个类的依赖关系(如其他类或服务)注入到该类中,而不是在类内部创建它们。这有助于减少代码之间的耦合,并使测试更加容易。

这些是 C# 中与类和对象相关的基本概念和特性。通过理解这些概念和特性,您可以更好地利用面向对象编程的优势,编写出更加清晰、可维护和可扩展的代码。