类和对象的概念

一个类由以下部分组成:

public class Person
{
    // 成员变量
    public string name;
    public int age;

    // 构造函数
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }

    // 成员方法
    public void SayHello()
    {
        Console.WriteLine($"Hello, my name is {this.name}, and I am {this.age} years old.");
    }
}

对象

对象是类的实例化。实例化是使用 new 运算符创建一个对象,并将其分配给一个变量。在创建对象时,必须调用该类的构造函数。构造函数用于初始化对象的成员变量。

以下是一个创建 Person 类对象的示例:

Person person = new Person("Tom", 30);

上面的代码创建了一个名为 person 的 Person 对象,其名称为 "Tom",年龄为 30 岁。

一旦创建了一个对象,就可以通过使用点运算符访问它的属性和方法。

person.SayHello();
Console.WriteLine($"My name is {person.name}, and I am {person.age} years old.");

上面的代码调用了 person 对象的 SayHello() 方法,并使用 Console.WriteLine() 方法打印出了 person 对象的名称和年龄。

继承

继承是一种机制,它允许子类(派生类)从父类(基类)继承属性和行为,并在此基础上添加或修改其自己的特性。派生类可以访问基类的公共和受保护的成员变量和成员函数,并可以使用它们来定义自己的成员变量和成员函数。

以下是一个继承自 Person 类的 Employee 类的示例:

public class Employee : Person
{
    public int employeeId;
    public float salary;

    public Employee(string name, int age, int employeeId, float salary) : base(name, age)
    {
        this.employeeId = employeeId;
        this.salary = salary;
    }

    public void ShowEmployeeDetails()
    {
        Console.WriteLine($"Name: {name}, Age: {age}, Employee Id: {employeeId}, Salary: {salary}");
    }
}

在上面的代码中,Employee 类继承自 Person 类,并添加了 employeeId 和 salary 两个成员变量,以及 ShowEmployeeDetails() 来显示雇员的详细信息。构造函数调用了父类的构造函数来初始化从父类继承的成员变量。

使用 Employee 类的示例:

Employee employee = new Employee("Alice", 25, 1234, 50000);
employee.SayHello();
employee.ShowEmployeeDetails();

上面的代码创建了一个名为 employee 的 Employee 对象,并设置了名称、年龄、雇员 ID 和薪水。然后,它调用了从 Person 类继承的 SayHello() 方法和 Employee 类的 ShowEmployeeDetails() 方法。

输出结果如下:

Hello, my name is Alice, and I am 25 years old.
Name: Alice, Age: 25, Employee Id: 1234, Salary: 50000
总结

在 C# 中,继承是实现代码重用和组织的重要机制。通过继承,子类可以从父类继承属性和行为,并添加或修改其自己的特性。C#中的继承是单继承的,即每个类只能直接继承自一个基类。

实际应用

在学校里,学生是一个类,而每个具体的学生就是对象。

假设我们要创建一个学生类(Student class),这个类将拥有以下属性和行为:

假设我们要创建一个名为小明(Ming)的学生对象,可以通过以下方式实现:

// 创建一个名为 Student 的类
public class Student
{
    public string name;
    public int age;
    public string id;
    public string gender;

    // 学生类的构造函数
    public Student(string name, int age, string id, string gender)
    {
        this.name = name;
        this.age = age;
        this.id = id;
        this.gender = gender;
    }

    // 学习方法
    public void Study()
    {
        Console.WriteLine($"{name} is studying now.");
    }

    // 休息方法
    public void Rest()
    {
        Console.WriteLine($"{name} is taking a rest now.");
    }
}

// 创建一个名为小明的 Student 对象
Student ming = new Student("Ming", 18, "20181001", "male");

在上面的代码中:

用类的方法和属性来模拟小明的行为,比如:

ming.Study();
ming.Rest();
Console.WriteLine($"Name: {ming.name}, Age: {ming.age}, Id: {ming.id}, Gender: {ming.gender}");

// Ming is studying now.
// Ming is taking a rest now.
// Name: Ming, Age: 18, Id: 20181001, Gender: male

通过调用 ming 对象的 Study() 和 Rest() 方法,我们模拟了小明正在学习和休息的行为。另外,我们还可以通过 ming 对象的属性来获取小明的信息。

这个例子中,学生类就是一个抽象的概念,而小明、小红等具体的学生则是类的实例,也就是对象。类定义了对象的属性和行为,而对象则具体实现了这些属性和行为。